Pull to refresh

Безбраузерные приложения на Javascript (HTA)

JavaScript *
Одна из мощнейших средств Ослика (начиная с пятой (!) версии) — HTA или HTML Application (безбраузерные приложения), позволяет создавать Windows-приложения используя HTML, CSS и Javascript/VBscript. Сразу хочу заметить, что в этой статье используется исключительно Javascript.

С точки зрения пользователя, созданная «программа» ничем, кроме расширения (*.hta), не отличается от любой другой программы: заголовок окна, иконка, отображение на панели задач, а самое главное никаких предупреждений при доступе к файлам компьютера. При всем этом вам не придется устанавливать никаких отдельных приложений или плагинов, достаточно Internet Explorer-а!



Далее представлен код простой HTA-программы. Скопируйте его в любой текстовый редактор, перед сохранением обязательно проверьте все кавычки сгенерированные хабра-редактором, и «HTA:Application» напишите слитно без пробелов (т.к. хабра-редактор ставит пробел после двоеточия)! Далее сохраните с расширением *.hta и запустите.

ВНИМАНИЕ! Пробел или перевод строки перед обратным слешем «/>» тоже обязателен!

<html><head><title>
моя программа</title>
<hta:application id=myHta
applicationName=myApp />
</head>
<body bgcolor=buttonface
style="border: none;
font: 8pt sans-serif"
scroll=no text=buttontext>
Hello world!
</body></html>


Разница всего лишь в одном теге заголовка <HTA:Application… />, и в расширении *.hta. А каков результат?

Параметры тега HTA:Application позволяют управлять видом созданным приложения. Если тег и/или параметры не заданы, то значения параметров назначаются по-умолчанию.

Параметр в HTML в JScript Значение(я)
(по умолчанию)
Обозначение
APPLICATIONNAME applicationName строка
(нет)
Уникальное имя приложения.
INNERBORDER innerBorder yes, no
(yes)
Наличие внутреннего бордюра.
BORDERSTYLE borderStyle normal, complex, raised, static, sunken
(normal)
Внутренний тип бордюра.
BORDER border thick, dialog, thin, none
(thick)
Наружный тип бордюра.
CAPTION caption yes, no
(yes)
Наличие заголовка.
Нет commandLine Только для чтения.
(полный путь к данному "*.hta")
Содержимое командной строки.
CONTEXTMENU contextMenu yes, no
(yes)
Контекстное меню при клике правой кнопкой мыши.
SELECTION selection yes, no
(yes)
Возможность выделения текста внутри HTA.
ICON icon URL
(нет)
Путь к иконке (*.ico).
MAXIMIZEBUTTON maximizeButton yes, no
(yes)
Наличие кнопки «развернуть».
MINIMIZEBUTTON minimizeButton yes, no
(yes)
Наличие кнопки «свернуть».
SCROLL scroll yes, no, auto
(yes)
Наличие скроллинга.
SCROLLFLAT (IE 5.5+) scrollFlat yes, no
(no)
Cтиль скроллинга.
SHOWINTASKBAR showInTaskBar yes, no
(yes)
Отображение в панели задач.
SINGLEINSTANCE singleInstance yes, no
(no)
Запретить запуск второго экземпляра.
SYSMENU sysMenu yes, no
(нет)
Наличие системного меню.
VERSION version строка
(нет)
Версия HTA.
WINDOWSTATE windowState normal, minimize, maximize
(normal)
Начальное состояние окна.
NAVIGABLE (IE 5.5+) navigable yes, no
(no)
Переход по ссылке произойдет в окне HTA.


Примечание:
Если не указать параметр BORDER или указать BORDER="thick", то размеры окна программы можно будет изменять при помощи мыши, в остальных же случаях (BORDER = thin || dialog || none), — размеры окна изменить нельзя.


Как вы видете, MS-овцы забыли добавить самые, по-моему, нужные параметры типа: winWidth, winHeight, winPositionX и winPositionY. Но это можно вылечить самим.

В примере, я постараюсь показать тот минимум, чтобы хотябы завлечь вас…

<html><head>
<hta:application id=hta_id
applicationName=hta_name
showInTaskBar=no
caption=no
innerBorder=no
selection=no
scroll=no
contextmenu=no />
<script language=javascript>
var winWidth=450; // ширина окна
var winHeight=120; // высота окна
// изменяем размер
window.resizeTo(winWidth, winHeight);

// окно в центр экрана
var winPosX=screen.width/2-winWidth/2;
var winPosY=screen.height/2-winHeight/2;
window.moveTo(winPosX, winPosY);
</script>
</head>
<body bgcolor=buttonface text=buttontext
style="padding: 2px;font: 8pt 'MS Sans serif'">
<div>Вглядитесь повнимательней на панель задач...
Ой, а меня, там нету...<br>
Правая кнопка мыши не работает, и текст не отмечается...<br>
Ну чем, я не программа? Хотя похожа на баннер ;).</div>
<div align=right><br>Для выхода нажмите ALT+F4.</div>
</body></html>


Сегодня на этом все.

Дополнительную информацию найдете в библиотеке MSDN.
Tags:
Hubs:
Total votes 79: ↑72 and ↓7 +65
Views 32K
Comments Comments 69