Показать сообщение отдельно
  #21 (permalink)  
Старый 27.07.2017, 11:03
Интересующийся
Отправить личное сообщение для DjFuntik Посмотреть профиль Найти все сообщения от DjFuntik
 
Регистрация: 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 отобразим.
Вот собственно и всё. Ничего о блокировках я в описаниях по командам не нашёл.
Ответить с цитированием