Как запустить hta приложение
HTML Application (HTA) — приложение Microsoft Windows, написанное на HTML или Dynamic HTML. Возможность создания HTA впервые возникла с появлением браузера Microsoft Internet Explorer 5.0.
HTA-документ (HTA-приложение) является HTML-документом со встроенными в заголовке атрибутами HTA (соответственно, имеет расширение .hta). Для настройки внешнего вида HTA введён новый тег <hta:application …>, который располагается в секции <head> … </head> документа HTA. Приложение HTA может быть сделано из обычного файла HTML сменой расширения на .hta.
Обычное приложение HTML ограничено моделью безопасности web-браузера, например, возможны взаимодействие с сервером, манипулирование объектной моделью страницы (обычно для проверки данных формы и/или создания интересующих визуальных эффектов) и чтение/запись файлов «куки» (англ. cookie ).
Т. к. приложения HTA поддерживают исполнение сценариев, они могут являться носителем вредоносного кода и могут использоваться для создания червей, работающих через почтовые программы.
Содержание
Атрибуты HTA
applicationName | идентификатор исполнения HTA-документа | /*name*/ |
---|---|---|
border | вид обрамления окна | thin, dialog, none, thick |
borderStyle | стиль обрамления окна | complex, normal, raised, static, sunken |
caption | наличие заголовка окна | yes/no |
icon | иконка заголовка, в формате ICO (32x32) | /*path*/ |
maximizeButton | наличие кнопки «восстановить» | yes/no |
minimizeButton | наличие кнопки «свернуть» | yes/no |
showInTaskbar | отображение документа в панели задач Windows | yes/no |
windowState | исходный размер окна | normal, minimize, и maximize |
innerBorder | внутренняя граница окна | yes/no |
navigable | определяет открытие ссылки в новом окне или родительском | yes/no |
scroll | наличие полосы прокрутки | yes/no |
scrollFlat | 3D-вид полосы прокрутки | yes/no |
singleInstance | возможность одновременного открытия нескольких окон | yes/no |
sysMenu | наличие системного меню и кнопок управления окном в заголовке окна | yes/no |
contextMenu | контекстное меню, вызываемое правой кнопкой мыши | yes/no |
selection | разрешение выделения текста в HTA-окне | yes/no |
version | версия HTA | /*version*/ |
Примеры HTA
Для тестирования примеров скопируйте код в текстовый файл с именем *.hta (например, test.hta) и запустите на выполнение (например, дважды щёлкнув по значку файла в Проводнике).
Простой статичный пример HTA
Приложение отображает статичное содержимое с установленными графическими атрибутами окна.
Классический пример «Hello world!»
Пример классической программы, выводящей приветствие при нажатии на кнопку.
HTA (HTML Application) - это простая технология, позволяющая создавать полезные приложения даже без знания серьезных языков программирования.
Создать HTA-приложение можно, просто написав HTML-страницу и сохранив ее с расширением .hta, которое обрабатывается программой mshta.exe , её задача - обеспечить связь программы с браузером. Так как такие приложения используют движок браузера, то они объединяют в себе все их возможности - их объектную модель, разметку страницы (HTML), каскадные листы стилей (CSS), скрипты (VBS и JS). Также на такие приложения не накладывается ограничения безопасности - они работают как любой исполняемый файл.
То есть при помощи HTML создается абсолютно любой пользовательский интерфейс, причем с минимальными усилиями и без каких-либо существенных ограничений, логика программы организуется кодом на Java Script или Visual Basic Script, а само приложение выходит за рамки браузера - программа на стадии выполнения ничем не будет отличаться от обычных оконных приложений для Windows - запущенное приложение будет присутствовать на панели задач, иметь собственные окно, меню и значок. Хотя здесь нужно оговориться: программа не будет видна среди запущенных приложений в диспетчере задач, единственное средство, которым можно контролировать запущенную программу - это процесс mshta.exe.
В то время, как расширение .hta указывает системе как работать с приложением, новый тег <hta:application> и аттрибуты указывают окну, как себя вести будучи приложением. Этот тег предоставляет ограниченный набор аттрибутов, управляющих всем от стиля границы окна и до программной иконки и меню. Для создания функционирующего HTA, этот тег должен быть описан внутри тега HEAD .
Элемент HTA:APPLICATION требует закрывающего тега.
Так как тэг элемента HTA:APPLICATION является пустым, он также может быть закрыт использую следующий прием.
При использовании вышеуказанного приема, прямому слэшу (/) должен предшествовать пробельный символ.
Помимо управлением окном приложения, этот тег также дает возможность обращаться к свойствам приложения из скриптов, расположенных в коде HTA-приложения. Стоит заметить, что все свойства этого тега доступны только для чтения.
Атрибут и свойство id
Определяет идентификатор объекта - уникального имени внутри файла HTA-приложения.
Атрибут и свойство applicationName
Содержит имя приложения. Свойство не имеет значения по умолчанию.
Будучи установленным в true , свойство singleInstance проверяет значение applicationName перед запуском экземпляра приложения. Чтобы проверка была успешной, значение applicationName должно быть уникальным. Можно использовать значение свойства applicationName для идентификации единственности запущенного приложения, независимо от адреса URL, используемого для доступа к нему.
Атрибут и свойство border
Содержит тип бордюра окна. Свойство border влияет на толщину бордюра и действительно только для окон HTA , у которых есть панель заголовка и сам заголовок. Устанавливая border в "None", вы убираете панель заголовка, иконку программы, и кнопки максимизирования и минимизирования. Это свойство может быть использовано совместно со свойством borderStyle . Возможные значения:
Dialog | Бордюр диалогового окна - пользователь не может изменить размер окна. |
None | Окно без бордюра. |
Thick | Толстый бордюр окна, плюс бордюр для изменения размера окна. (Значение по умолчанию). |
Thin | Тонкий бордюр окна с заголовком. |
Примечание
Если не указать параметр BORDER или указать BORDER="thick" , то размеры окна программы можно будет изменять при помощи мыши, в остальных же случаях, — размеры окна изменить нельзя.
Атрибут и свойство borderStyle
Содержит стиль бордюра клиентской области окна. Свойство borderStyle устанавливает стиль для бордюра содержимого окна, в то время как свойство border контролирует бордюр окна приложения. Возможные значения:
Complex | Приподнятый и утопленный бордюр. |
Normal | Нормальный бордюр. (Значение по умолчанию). |
Raised | Приподнятый 3-D бордюр. |
Static | 3-D бордюр, обычно используемый для окон, не обрабатывающих ввод пользователя. |
Sunken | Утопленный 3-D бордюр. |
Атрибут и свойство caption
Определяет, будет ли в окне HTML приложения отображаться панель заголовка. Заголовок приложения отображается только тогда, когда свойство caption установлено в "Yes". Отключение свойства caption также отключит кнопки "Свернуть", "Развернуть" и программную иконку. В этом случае нужно не забыть предоставить альтернативный способ выхода из приложения, например, кнопку "Закрыть" на форме приложения, вызывающую метод Window.Close . Возможные значения:
Yes | Панель заголовка отображается. (Значение по умолчанию). |
No | Панель заголовка не отображается. |
Свойство commandLine
Атрибут и свойство contextMenu
Определяет, появляется ли контекстное меню при нажатии на правую кнопку мыши. Возможные значения:
Yes | Контекстное меню появляется. (Значение по умолчанию). |
No | Контекстное меню не появляется. |
Атрибут и свойство icon
Определяет путь к файлу иконки, используемой в HTML приложении. HTA использует системную иконку, если значение не определено. Атрибут Icon распознаёт стандартные файлы с расширением .ico , содержащие изображение размером 32x32 пикселя, а также успешно распознаёт первую иконку из файлов "*.exe", "*.icl" (библиотека иконок), "*.dll", и "*.ocx".
Атрибут и свойство innerBorder
Определяет, отображается ли внутренняя 3-D граница. Возможные значения:
Yes | Внутренняя 3-D граница отображается. (Значение по умолчанию). |
No | Внутренняя 3-D граница не отображается. |
Атрибут и свойство maximizeButton
Определяет, отображается ли кнопка "Развернуть" на панели заголовка окна HTML приложения. Чтобы отображались кнопки "Свернуть" и "Развернуть", окно должно иметь панель заголовка (атрибут caption ). Возможные значения:
Yes | Кнопка "Развернуть" отображается. (Значение по умолчанию). |
No | Кнопка "Развернуть" не отображается. |
Атрибут и свойство minimizeButton
Определяет, отображается ли кнопка "Свернуть" на панели заголовка окна HTML приложения. Чтобы отображались кнопки "Свернуть" и "Развернуть", окно должно иметь панель заголовка (атрибут caption ). Возможные значения:
Yes | Кнопка "Свернуть" отображается. (Значение по умолчанию). |
No | Кнопка "Свернуть" не отображается. |
Атрибут и свойство navigable
Определяет, в каком окне будут открываться загружаемые документы. Возможные значения:
No | Будут открываться в новых окнах. (Значение по умолчанию). |
Yes | Будут открываться в основном окне. |
Атрибут и свойство scroll
Определяет, будут ли отображаться полосы прокрутки. Возможные значения:
Yes | Полосы прокрутки отображаются. (Значение по умолчанию). |
No | Полосы прокрутки не отображаются. |
Auto | Полосы прокрутки появляются только тогда, когда содержимое документа не умещается в клиентской области окна. |
Атрибут и свойство scrollFlat
Определяет, в каком виде будут отображаться полосы прокрутки. Возможные значения:
Yes | Полосы прокрутки двухмерные. |
No | Полосы прокрутки трёхмерные. (Значение по умолчанию). |
Атрибут и свойство selection
Определяет, может ли содержимое документа быть выбрано мышкой или с помощью клавиатуры. Значение "No" запрещает появление контекстного меню и присвоение атрибуту contextMenu значения "Yes" не произведёт никакого эффекта. Возможные значения:
Yes | Содержимое может быть выбрано. (Значение по умолчанию). |
No | Содержимое не может быть выбрано. |
Атрибут и свойство showInTaskBar
Определяет, будет ли HTML приложение появляться на панели задач Windows. Возможные значения:
Yes | Приложение отображается на панели задач. (Значение по умолчанию). |
No | Приложение не отображается на панели задач. |
Атрибут и свойство singleInstance
Определяет, может ли быть запущенно больше одного экземпляра HTML приложения одновременно. Возможные значения:
Yes | Может быть запущен только один экземпляр приложения. |
No | Может быть запущенно несколько экземпляров приложения одновременно. (Значение по умолчанию). |
Атрибут и свойство sysMenu
Определяет, отображается ли системное меню в HTML приложении. Системное меню HTA обозначается программной иконкой в левом углу панели заголовка. Системное меню HTA показывает все команды, входящие в стандартное системное меню Windows, включая "Восстановить", "Переместить", "Размер", "Свернуть", "Развернуть", и "Закрыть". Возможные значения:
Yes | Системное меню отображается в панели заголовка. (Значение по умолчанию). |
No | Системное меню не отображается в панели заголовка. |
Атрибут и свойство version
Определяет номер версии HTML приложения.
Атрибут и свойство windowState
Определяет начальные размеры окна HTML приложения. Возможные значения:
Normal | Размер окна - стандартный размер для Microsoft Internet Explorer. (Значение по умолчанию). |
Minimize | Появляется только заголовок окна на панели задач. |
Maximize | Окно появляется развёрнутым во весь экран. |
Пример
В этом маленьком примере объединены объектная модель, разметка страницы (HTML), каскадный лист стилей (CSS), Javascript и элементы WSH.
Может, все уладится. Может быть, пламя погаснет. А лёд растает. пропасти зарастут. быть может. сады. сады.Э. Ионеско, «Воздушный пешеход».
HTML Applications (HTA) — это технология, обладающая редкими и совершенно несовместимыми свойствами:
- это невероятно просто для программиста и не требует ничего, кроме текстового редактора;
- это придумано очень по делу и не тянет за собой ничего лишнего;
- это реализовано только в MS и, похоже, последовательно отвергается конкурентами;
- это практически не используется в информационных системах.
Более подробно (если вы об этом ещё не слышали): HTML Applications — это способ запуска графического ядра MSIE в виде специфического, облегчённого приложения (HTML Application host), что позволяет:
- разом снять все вопросы, связанные с безопасностью;
- избавиться от браузерного меню, справки, навигационных кнопок и горячих клавиш (всего, что так мешает в интерфейсах редактирования БД);
- выделить WEB-приложению отдельное окно со своим заголовком и иконкой, видимое в списке задач, на нижней панели и т. д.;
- создать в меню "Программы" (или "Автозапуск"), а также на рабочем столе ярлыки (shortcuts) с вашими фирменными иконками и горячими клавишами;
- установить режим "одного окна" (single_instance), который в комбинации с горячим ключом делает окно приложения доступным за 1 клик вслепую, как бы ни был завален рабочий стол;
- заблокировать выделение объектов на странице: при этом кнопки, свёрстанные в виде таблиц, кажутся монолитно отрисованными.
Содержание
Пример HTA-файла
Пишем для нашего приложения HTA (это стандартный HTML + один дополнительный тег)-файл следующего содержания:
Стоит обратить внимание на атрибут application="no". Если здесь указать 'yes', то приложение будет считать само HTA-окно за window.top. Однако содержимое этого окна не может перезагружаться по http-ссылке и туда не подключаются js-библиотеки Вашегол приложения. В результате ссылки с target="_top" будут открываться в новом окне браузера, а использование переменной window.top (в предположении, что туда подгружен navigation.js) будет порождать js-ошибки.
Скрипт на onBeforeUnload явно завершает сессию при закрытии окна. Разумеется, это срабатывает при доступности сервера в соответствующий момент. Впрочем, в случае некорректного выхода большой беды не случается, сессия удаляется по истечении установленного срока.
Фреймы: свои и чужие
Имя фрейма application_frame является зарезервированным и используется в Eludia, его переопределять не следует. У всех фреймов, вложенных в него, для вышеупомянутой опции application, как правило, следует проставлять значение "yes".
Однако в исключительных случаях, напротив, требуется изолировать фрейм и создать ему иллюзию главного окна. Такое случается при интеграции продвинутых инородных WEB-интерфейсов (например, почтовых).
Если есть риск, что WEB-приложение откликается с заметной глазу задержкой (а это, как правило, именно так), стоит задуматься о том, чем заменить настораживающий белый экран. Хороший вариант — страница-заставка с муляжом прогресс-индикатора. Для пущей красоты можно устроить переход на login-форму гладко, через page transition. Примерный HTML-код такой страницы (назовём её portal.html и расположим рядом с HTA-файлом):
Бесконечный градусник можно позаимствовать вот отсюда: [1].
Легко видеть, что URL приложения записан в onLoad страницы-заставки. Соответственно, в HTA-файле должна быть указана она сама.
Инсталляция
HTA-файл мыслится как полноправная Windows-программа, так что должен иметь соответствующего вида инсталлятор. При помощи Inno Setup это очень просто. Достаточно переписать ваш файл в чистую директорию, положить рядом favicon.ico и добавить к ним .iss-файл следующего содержания:
После чего открыть его Inno Setup Compiler'ом, отредактировать URL и заголовки — и нажать кнопку comiple. Мгновение — и инсталляционный комплект готов.
Публикация инсталлятора
Поскольку WEB-приложение — это своего рода сайт, логично сделать бинарный инсталлятор доступным как "файл для загрузки". Разместить его стоит туда же, куда все статические файлы приложения: в директорию /i.
Теперь — ссылка. Как правило, лучшее место для ссылки на него — форма авторизации. Правда, при использовании прозрачной авторизации (например, NTLM) эта страница может никогда не показываться, так что жёстких правил тут нет.
Во всяком случае, если вы размещаете ссылку не как основное содержимое страницы, а как дополнительную опцию, стоит позаботиться о том, чтобы она не была видна из-под самого HTA-файла. Для этого её видимость надо поставить в зависимость от имени текущего окна:
Нерешённые проблемы
Как бы ни было приятно использовать HTA, есть минимум 2 вопроса, которые заметно осложняют нам жизнь.
Внешние ссылки (почта)
Извещения по e-mail — стандартная функциональность WEB-приложений, востребованная многими заказчиками. Как правило, при этом требуется сопровождать письма ссылками на внутренние страницы системы. Например, ставить в извещении о подтверждении платежа ссылку на карточку этого платежа. Вполне логично.
Беда в том, что сослаться из письма на страницу в HTA-оболочке не более реально, чем запустить из этого же письма exe-файл с нужными параметрами. Вот только часть проблем, не позволяющих сделать это:
- сервер при отправке почты не имеет представления о том, в какую директорию установлен HTA-файл;
- в режиме singleinstance происходит не открытие окна, а переключение на него, параметры при этом не могут быть переданы.
Можно было бы генерировать HTA-файлы на каждую карточку и слать их в качестве вложений в письма, однако даже если бы мы отказались от singleinstance (которы в данном случае порождает аналогичный логический конфликт), пришлось бы преодолевать защиту от HTA, которая встроена практически во все почтовые клиенты с тех пор как HTA широчайшим образом использовались какими-то хулиганами как платформа разработки вирусов.
Инсталляция вживую
Как бы ни был хорош Inno Setup, было бы ещё приятнее иметь возможность устанавливать HTA без предварительной компиляции инсталлятора. В частности, это позволило бы динамически записывать в HTA адрес, по которому обратился пользователь: ведь он может быть неизвестен на этапе разработки приложения, меняться при перенастройке сервера и т. д.
Можно перегенерировать setup.exe по запросу, однако Inno Setup доступен только для Windows, а большинство рабочих серверов приложения используют UNIX/Linux.
Другой вариант: генерировать на сервере VB-скрипт, который производит на клиенте все необходимые операции при помощи стандартных ActiveX-компонент. Процедура такой установки разработана, однако, к сожалению, использовать её практически невозможно, поскольку для неё требуется длительная работа по отключению нескольких каскадов безопасности на каждом рабочем месте.
Как и в предыдущем случае, отличная функциональная возможность оказалась недоступной из-за глобального недоверия к "файлам из Сети".
В предыдущей статье , посвящённой HTML-приложениям (HTA), мы научились создавать простейшие приложения, содержащие всего одно, если так можно выразиться, окно. Но в реальной программистской жизни редко удаётся обойтись одним-единственным "окном". Приложение может иметь очень сложный интерфейс, может выполнять разные задачи, к тому же, будучи "однооконным", оно может оказаться неудобным для пользователя.
Напрашивается выход - разделить интерфейс и логику приложения на несколько "окон". Но как это реализовать на практике?
1. Введение в "многооконные" HTML-приложения
Начнём с небольшого теоретического курса, рассматривающего принципы создания "многооконных" HTML-приложений. Принципы эти не так уж и сложны и используются довольно давно. Ну да обо всём по порядку.
1.1. Проблемы, возникающие при создании "многооконных" HTML-приложений
Чтобы создать "многооконное" приложение, нам следует создать несколько веб-страниц - по одному на каждое "окно". Эти веб-страницы будут содержать отдельные части пользовательского интерфейса и логики приложений. Файлы, хранящие их, будут иметь расширение hta - именно оно, как мы помним из первой статьи, даёт понять Internet Explorer, что перед ним HTML-приложение, а не просто веб-страница. Фактически мы создадим несколько HTML-приложений, работающих как единое целое. Но здесь возникают две проблемы.
Проблема первая, касающаяся пользователя, - неизвестно, на каком HTA-файле следует щёлкнуть, чтобы запустить приложение. Конечно, мы можем дать нужному файлу "говорящее" имя, наподобие runme.hta, startup.hta или, в лучших традициях веб-дизайна, index.hta. Но неопытный пользователь может нас не понять - для него все файлы приложения на одно лицо - и запустить не тот HTA-файл. После чего он заявит, что приложение не работает.
В случае, если приложение распространяется в дистрибутиве, мы можем указать, чтобы при установке создавался ярлык, указывающий на нужный HTA-файл. В результате пользователь запустит приложение щелчком на этом ярлыке. То же самое и в случае распространения приложений с веб-страницы - мы создадим гиперссылку, указывающую на нужный HTA-файл, и посетителю останется только щёлкнуть на ней, чтобы запустить приложение. Так что данную проблему мы решим.
Но столкнёмся со второй проблемой - отсутствием удобных механизмов для передачи данных между отдельными веб-страницами, то есть "окнами" приложения. А данные передавать придётся, ведь эти веб-страницы составляют единое приложение, и данные, введённые на одной веб-странице, скорее всего, будут обрабатываться на другой.
Мы можем передавать данные в составе интернет-адреса - методом GET. Но, во-первых, таким способом мы не сможем передать большой объём данных (длина интернет-адреса ограничена 255 символами), а во-вторых, нам придётся писать дополнительный код, который будет сначала определённым образом кодировать эти данные и добавлять их к интернет-адресу, а потом - извлекать их оттуда и декодировать в вид, пригодный для использования в сценариях.
Так что нам делать?
1.2. Решение проблем - плавающие фреймы
Выход есть - использование фреймов. Точнее, определённой их разновидности - плавающих фреймов.
Фрейм в терминологии веб-дизайна, - элемент веб-страницы, предназначенный для отображения содержимого другой веб-страницы. Они используются в веб-дизайне довольно давно и являются частью стандарта HTML.
Традиционные фреймы объединяются в наборы фреймов, где они выстраиваются либо по горизонтали, слева направо, либо по вертикали, сверху вниз. Такой набор фреймов занимает веб-страницу целиком; никакого другого содержимого на ней быть не должно. Дело в том, что тег, создающий набор фреймов, согласно стандартам HTML, замещает собой тег <BODY>, определяющий её содержимое. А содержимое, которое должно присутствовать на этой веб-страницы, распределяется по другим веб-страницам, которые выводятся во фреймах, составляющий этот набор.
Плавающие фреймы - другая разновидность фреймов. Они не создаются в составе наборов фреймов, а "гуляют сами по себе". Они могут занимать произвольную часть веб-страницы, успешно соседствовать с другим содержимым, и их проще создавать.
Примечание:
Разумеется, никто не запрещает применять при создании HTML-приложений традиционные фреймы. Пожалуй даже, в некоторых случаях они могут оказаться предпочтительнее.
2. Реализация "многооконных" HTML-приложений
Что ж, с теоретической частью покончено. Займёмся практикой.
2.1. Создание плавающего фрейма
И начнём мы с создания плавающих фреймов. Плавающие фреймы создаются с помощью парного тега <IFRAME>. Этот тег помещается в том месте HTML-кода веб-страницы, где должен находиться плавающий фрейм. Содержимого этот тег не имеет.
Здесь мы создали плавающий фрейм с именем ffr1, занимающий всю (100%) ширину веб-страницы, высотой в 300 пикселов, без рамки и полос прокрутки, сделали его доверенным и вывели в нём веб-страницу 1.html.
Полезные для нас атрибуты тега <IFRAME> перечислены ниже.
Атрибут ALIGN позволяет указать горизонтальное выравнивание плавающего фрейма относительно остального содержимого веб-страницы. Здесь доступны три значения:
- left - фрейм выравнивается по левому краю доступного пространства, при этом остальное содержимое "обтекает" его справа;
- center - фрейм выравнивается по центру доступного пространства;
- right - фрейм выравнивается по правому краю доступного пространства, при этом остальное содержимое "обтекает" его слева.
Если данный атрибут не указан, выравнивание фрейма не выполняется, и остальное содержимое веб-страницы его не обтекает.
Атрибут APPLICATION устанавливает, может ли веб-страница, отображённая во фрейме, получить доступ к веб-странице, на которой находится этот фрейм, и наоборот, или, другими, словами, является ли фрейм доверенным. Значение yes делает фрейм доверенным, а значение no (это значение по умолчанию) - обычным.
Поскольку довольно часто приходится получать доступ из одной веб-страницы, составляющей HTML-приложение, к другой, мы должны обязательно сделать все фреймы в HTML-приложении доверенными. Без вариантов.
Атрибут FRAMEBORDER позволяет указать Internet Explorer, выводить ли вокруг фрейма рамку. Значение yes или 1 указывает вводить рамку, значение no или 0 - не выводить. Значение по умолчанию - 1.
Атрибут HEIGHT задаёт высоту фрейма. Здесь можно задавать как абсолютные значения в пикселах, так и относительные в процентах от свободного пространства на веб-странице. Значения в пикселах указываются как есть, а значения в процентах помечаются символом %, который ставится сразу после значения. В любом случае значение этого атрибута указывается в виде целого числа.
Атрибут HSPACE задаёт расстояние между фреймом и остальным содержимым веб-страницы по вертикали. Его значение задаётся в виде целого числа в пикселах. Значение по умолчанию - 0.
Атрибут SCROLLING указывает, будут ли во фрейме присутствовать полосы прокрутки. Здесь доступны три значения:
- yes - полосы прокрутки выводятся в любом случае;
- no - полосы прокрутки не выводятся в любом случае;
- auto - полосы прокрутки выводятся только в том случае, если содержимое веб-страницы не помещается во фрейме (это значение по умолчанию).
Атрибут SRC задаёт интернет-адрес файла веб-страницы, которая должна выводиться во фрейме изначально.
Атрибут VSPACE задаёт расстояние между фреймом и остальным содержимым веб-страницы по горизонтали. Его значение задаётся в виде целого числа в пикселах. Значение по умолчанию - 0.
Атрибут WIDTH задаёт ширину фрейма. Здесь также можно задавать как абсолютные значения в пикселах, так и относительные в процентах от свободного пространства на веб-странице. Значения в пикселах указываются как есть, а значения в процентах помечаются символом %, который ставится сразу после значения. В любом случае значение этого атрибута указывается в виде целого числа.
2.2. Начинаем создавать "многооконное" HTML-приложение
Давайте для практики реализуем приложение - преобразователь величин из дюймов в миллиметры, что мы создали в первой статье цикла, в виде приложения-"мастера". Сделаем мы это в три этапа.
HTML-код основной веб-страницы приведён ниже.
t;
</HTML>[/code]
Здесь нам всё, в принципе, знакомо ещё по первой статье. Дадим лишь минимальные пояснения.
В плавающем фрейме изначально будет выводиться веб-страница 1.html. Она будет содержать поле ввода Дюймы, где указывается величина в дюймах.
Для создаваемого приложения мы указали версию 2.0. Это мелочь, но говорит об аккуратности, проявленной разработчиками.
Сохраним эту веб-страницу в файле с именем, скажем, Convertor.hta. На этом первый этап закончен.
Второй этап - создание веб-страницы 1.html, которая будет изначально отображаться в плавающем фрейме. На ней мы поместим поле ввода Дюймы.
HTML-код веб-страницы 1.html очень прост и не требует никаких разъяснений.
HTMl-код веб-страницы 2.html также очень прост.
2.3. Программное открытие веб-страницы во фрейме
Итак, пользователь запустил наше приложение, ввёл в поле ввода Дюймы величину в дюймах и нажал кнопку Вперёд. В результате во фрейм будет загружена вторая веб-страница (2.html), в поле ввода Миллиметры которой появится та же величина, но уже преобразованная в миллиметры.
Стоп, но как нам загрузить нужную веб-страницу во фрейме? Очень просто!
Плавающий фрейм с точки зрения веб-сценария является экземпляром объекта HTMLIFrameElement. Этот объект поддерживает свойство src, соответствующее атрибуту SRC тега <IFRAME>. Оно задаёт или возвращает интернет-адрес веб-страницы, открытой в этом фрейме, в виде строки.
Значит, чтобы открыть во фрейме другую веб-страницу, нам достаточно присвоить строку с её интернет-адресом свойству src данного фрейма.
Откроем веб-страницу Convertor.hta и добавим к веб-сценарию, уже присутствующему в её секции заголовка (в теге <HEAD>), вот такой код:
Читайте также: