Вот она
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 отобразим. Вот собственно и всё. Ничего о блокировках я в описаниях по командам не нашёл. |
Собственно, убрал RunJAVA и воткнул несколько строк STROKA(colon).... блокировать браузер нечем! Файл не загружается, eval не выполняется..... LOADING так и не появился.... значит не RUNJAVe причина
|
DjFuntik,
танцы с бубнами ... перед RunJAVA добавьте document.documentElement.clientWidth; |
нет, если вы намекаете, то что LOADING попадает "куда-то" вне видимой области, то нет - если из
<DIV id='waitDiv' style='z-index:1; left: 47%; visibility: visible; удалить "visibility: visible;", то LOADING отображается в центре экрана, а значит местоположение правильное |
DjFuntik,
картинка не показывается в 3 случаях -- не загружена (браузер не хочет грузить невидимое,может помочь прелоад), не нарисована(пост 23, после изменения ксс дать странице перерисоваться), комп занят загрузкой с сервера(???). всё, более причин не знаю и помочь не могу. |
Ну вот смотрите пост 19 закомментироуйте строки 23 и 27, в строке 37 удалите "visibility: visible;" и запустите. LOADING будет отображаться поверх основного содержимого ибо "z-index:1". Т.е. всё нормально загружено и в нужном месте отображается. На счёт загрузки с сервера (хм), ну так я ж убрал RunJAVA, и соответственно нечего грузить с сервера
|
DjFuntik,
испорченный телефон, если без RunJAVA картинка есть, значит ваша загрузка блокирует показ и весь браузер, пока браузер не загрузит то что нужно, он ничего больше делать не будет, в том числе и показывать картинки. |
Ну к примеру, тут загрузки с сервера и строки 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,
больше мне добавить нечего. |
О! 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); Может не совсем корректно, но зрительно очень похоже на правду |
Часовой пояс GMT +3, время: 14:22. |