Тема: HTA: хранение ресурсов в гипертекстовых приложениях
Ресурсы — это часть данных HTML разметки, которая не парсится, и является удобным способом хранения данных. Обращение к таким ресурсам в JavaScript происходит стандартно, например: element.innerHTML.
Для работы с ресурсами, кроме самого HTA-приложения, нам понадобится дополнительный текстовый файл resource.htc, который должен находиться рядом с нашим приложением:
<PUBLIC:COMPONENT TAGNAME="data" LITERALCONTENT="true" />
Само HTA-приложение:
<html xmlns:resource>
<script>
function main ()
{
var element = document.getElementsByTagName('data')[0];
alert(element.innerHTML);
alert('Парсинг элемента отключен. Проверим его на наличие текстовых узлов. \nelement.innerText \t' + element.innerText+'\n Как мы видим, их нет.');
}
</script>
<?import namespace = "resource" implementation = "resource.htc" />
<body onload="main()">
<resource:data><b>text resource</b></resource:data>
</body>
</html>
Несколько примечаний.
Можно хранить текстовые ресурсы просто в переменных JavaScript, но это менее удобно, т.к. придётся чаще использовать экранирование служебных символов, например, переводов строк.
Можно также хранить текстовые ресурсы просто с помощью разметки DHTML, например:
<html>
<script>
function main ()
{
var element = document.getElementById('oops');
alert(element.innerHTML);
alert(element.innerText);
}
</script>
<body onload="main()">
<span id="oops" style="display:none"><b>какой-то текст</b></span>
</body>
</html>
Но данные, содержащиеся в таком теге, проходят парсинг. Это может быть плохо тем, что дерево документа будет содержать ненужные объекты, расходуя память (в данном случае — поле innerText).
Автор идеи — JSman.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.