27.07.2017, 11:03
|
Интересующийся
|
|
Регистрация: 15.01.2013
Сообщений: 19
|
|
Вот она
function RunJava(resurs)
{
var fso = new ActiveXObject("Scripting.FileSystemObject")
var b = fso.FileExists(resurs)
if (b) { eval(fso.OpenTextFile(resurs, 1, 0).ReadAll()) }
}
Eval - Функция eval разрешает динамическое выполнение исходного кода JavaScript. Код, переданный в функцию eval, выполняется в том же контексте, в котором вызывается функция eval.
OpenTextFile - Открывает указанный файл и возвращает объект TextStream, который можно использовать для чтения из файла или добавления данных в файл.
формат: object.OpenTextFile(filename[, iomode[, create[, format]]])
iomode: Необязательный. Указывает режим ввода-вывода. Может иметь значение одной из двух констант: ForReading=1(моё!) или ForAppending=8.
create: Необязательный. Значение типа Boolean, которое указывает, можно ли создать новый файл, если файл не существует. True позволяет создать файл, а False - нет(моё!).
ReadAll - Выполняет чтение всего файла TextStream и возвращает результирующую строку.
Т.е. прочитать файл содержащий java код и выполнить его!
В загружаемом и соответственно далее исполняемом файле находится несколько вызовов процедуры
stroka ([["66","#"],["+","А1"],["+","Б1"],["-","В8"],["-","Г4"],["+","Д5"]]).
Сама процедура ничего заумного не делает, просто на основании данных массива формирует HTML код для нарисования таблицы.
Очищаем переменную os='', и вызываем RunJava, выполнение его приводит к запуску процедуры STROKA(colon) из файла js,
а т.к. EVAL имеет доступ ко всем переменным, то результат выполнения STROKA будет находиться в нашей переменной os, которую мы потом через innerHTML отобразим.
Вот собственно и всё. Ничего о блокировках я в описаниях по командам не нашёл.
|
|
27.07.2017, 11:15
|
Интересующийся
|
|
Регистрация: 15.01.2013
Сообщений: 19
|
|
Собственно, убрал RunJAVA и воткнул несколько строк STROKA(colon).... блокировать браузер нечем! Файл не загружается, eval не выполняется..... LOADING так и не появился.... значит не RUNJAVe причина
|
|
27.07.2017, 11:28
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
DjFuntik,
танцы с бубнами ... перед RunJAVA
добавьте
document.documentElement.clientWidth;
|
|
27.07.2017, 12:11
|
Интересующийся
|
|
Регистрация: 15.01.2013
Сообщений: 19
|
|
нет, если вы намекаете, то что LOADING попадает "куда-то" вне видимой области, то нет - если из
<DIV id='waitDiv' style='z-index:1; left: 47%; visibility: visible;
удалить "visibility: visible;", то LOADING отображается в центре экрана, а значит местоположение правильное
|
|
27.07.2017, 12:22
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
DjFuntik,
картинка не показывается в 3 случаях -- не загружена (браузер не хочет грузить невидимое,может помочь прелоад), не нарисована(пост 23, после изменения ксс дать странице перерисоваться), комп занят загрузкой с сервера(???). всё, более причин не знаю и помочь не могу.
|
|
27.07.2017, 12:55
|
Интересующийся
|
|
Регистрация: 15.01.2013
Сообщений: 19
|
|
Ну вот смотрите пост 19 закомментироуйте строки 23 и 27, в строке 37 удалите "visibility: visible;" и запустите. LOADING будет отображаться поверх основного содержимого ибо "z-index:1". Т.е. всё нормально загружено и в нужном месте отображается. На счёт загрузки с сервера (хм), ну так я ж убрал RunJAVA, и соответственно нечего грузить с сервера
|
|
27.07.2017, 13:14
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
DjFuntik,
испорченный телефон, если без RunJAVA картинка есть, значит ваша загрузка блокирует показ и весь браузер, пока браузер не загрузит то что нужно, он ничего больше делать не будет, в том числе и показывать картинки.
|
|
27.07.2017, 13:14
|
Интересующийся
|
|
Регистрация: 15.01.2013
Сообщений: 19
|
|
Ну к примеру, тут загрузки с сервера и строки 16 и 23 никак ни на что не влияют, если 23 строку закомментировать, то LOADING 16-ой строкой делается видимым,т.е. оно работает, а т.к. в конечном счёте его не видно, то значит и строка 23 работает.... но почему оно выполняется как-то не последовательно ума не приложу......
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=windows-1251">
<SCRIPT language=JavaScript>
var colon = new Array()
function stroka(colon)
{
os += "<TABLE><TR>"
for (var i = 1; i < colon.length; i++)
os += "<TD><P>....<IMG src='" + colon[i][1]+ ((colon[i][0]=="+")?"":"-") + ".jpg'>...</TD>"
os+="</TR></TABLE>"
}
function proc(js)
{
document.all["waitDiv"].style.visibility = 'visible' // или document.getElementById('waitDiv').style.display='block'
os = ""
ts.innerHTML = os
if (js==62) stroka ([["66","#"],["+","А1"],["+","Б1"],["-","В8"],["-","Г4"],["+","Д5"]])
if (js==96) stroka ([["67","#"],["+","А2"],["-","Б3"],["+","В7"],["+","Г9"],["-","Д1"]])
if (js==01) stroka ([["68","#"],["+","А3"],["+","Б5"],["-","В1"],["+","Г2"],["+","Д8"]])
setTimeout('ts.innerHTML = os;', 5000);
document.all["waitDiv"].style.visibility = 'hidden' // или document.getElementById('waitDiv').style.display='none'
}
</script>
</head>
<body>
<img src='screens1.jpg' onclick=proc('62')>
<img src='screens2.jpg' onclick=proc('96')>
<img src='screens3.jpg' onclick=proc('01')>
<DIV id='waitDiv' style='z-index:1; left: 47%; visibility: visible; position: absolute; top: 50%; text-align: center; background-color=yellow; border-style=groove'><FONT color=red><B><BIG>Идёт загрузка...</BIG></B><BR><IMG src='loading.gif'><BR>Пожалуйста, подождите.</FONT></DIV>
<div id='ts'></div><script>proc('62')</script>
</body>
</html>
Последний раз редактировалось DjFuntik, 27.07.2017 в 13:18.
|
|
27.07.2017, 13:15
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
DjFuntik,
больше мне добавить нечего.
|
|
27.07.2017, 13:23
|
Интересующийся
|
|
Регистрация: 15.01.2013
Сообщений: 19
|
|
О! 23 строку вписал в 22 и эффект почти то что нужно... счас дальше посмотрю подойдёт ли мне в мою детищу
P.S> неа... только при первой загрузке срабатывает, при повторном вызове proc() уже ничего нет
PSS> Вообщем решил проблему так:
setTimeout('ts.innerHTML = os; initToolTips("img"); document.getElementById("waitDiv").style.display=" none"; document.getElementById("monets").style.display="b lock"', 100);
Может не совсем корректно, но зрительно очень похоже на правду
Последний раз редактировалось DjFuntik, 27.07.2017 в 13:41.
|
|
|
|