Тема: JScript: динамическая смена некоторых свойств окна HTA-приложения
Создано по мотивам поста #15.
wisgest предложил замечательное и элегантное решение смены свойств окна HTML-приложения. Это решение актуально, для тех случаев, когда необходимо динамически менять некоторые свойства окна. В настоящее время это решение опробовано и работает только для смены значка приложения (в вернем левом углу окна и в панели задач).
Так как получить доступ к объекту DOM возможно как по имени тега, так и по его атрибуту id, в коде представлены оба способа - используется первый, второй - закомментирован (ищите строки помеченные //*** - 3 строки).
<html>
<head id="HTMLHeadElement">
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251'>
<title>Динамическая смена значка HTA приложения</title>
<HTA:APPLICATION
id="oHTA"
icon="cmd.exe"
/>
<script language='JavaScript'>
//*** Ссылка на тег HTA:APPLICATION по id
//var oHTA = document.getElementById('oHTA');
//*** Ссылка на тег HTA:APPLICATION по имени тега
var oHTA = document.getElementsByTagName('application')[0];
// Запомнить текущее состояние иконки
var icon = oHTA.icon;
// Флаг состяния нового значка
var newIcon = false;
// ОБработчик события - по щелчку внутри документа будет изменена иконка приложения
document.onclick=function()
{
// Удалить текущий тег из дерева объектов
oHTA.removeNode();
// Изменить иконку и переключить триггер
if ( newIcon ) {
// Был новый значок - вернуть старый
newIcon = false;
oHTA.icon = icon;
} else {
// Установить новый значок
newIcon = true;
oHTA.icon = 'explorer.exe';
}
//*** Добавить обновленный тег в дерево объектов
//document.getElementById('HTMLHeadElement').appendChild(oHTA);
document.getElementsByTagName('head')[0].appendChild(oHTA);
};
</script>
</head>
<body>
<p>При щелчке по странице изменится значок окна.</p>
<p>Старый значок - символ командного интерпретатора</p>
<p>Новый значок - символ Проводника</p>
</body>
</html>