<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; HTA: хранение ресурсов в гипертекстовых приложениях]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=3054&amp;type=atom" />
	<updated>2010-04-01T13:32:16Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=3054</id>
		<entry>
			<title type="html"><![CDATA[Re: HTA: хранение ресурсов в гипертекстовых приложениях]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=34312#p34312" />
			<content type="html"><![CDATA[<p>Смотрите также <a href="http://forum.script-coding.com/viewtopic.php?id=4328">как хранить ресурсы в файле JScript</a>.</p>]]></content>
			<author>
				<name><![CDATA[JSmаn]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24434</uri>
			</author>
			<updated>2010-04-01T13:32:16Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=34312#p34312</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: HTA: хранение ресурсов в гипертекстовых приложениях]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=33375#p33375" />
			<content type="html"><![CDATA[<p>Ниже упомяну о других способах хранения ресурсов.</p><p>1) Использование XML islands в разметке — тег XML. Содержимое тега — это XML документ, где сам тег XML является корневым элементом. Любое содержимое можно поместить в CDATA. Преимуществом данного подхода является возможность хранения ресурсов в древовидной структуре, а также доступность XPATH для поиска элементов xml-документа.</p><p>2) Хранение графических файлов в самой разметки, используя base64. Данная возможность присутствует с выходом 7й версии Internet Explorer. Пример:<br /></p><div class="codebox"><pre><code>&lt;img
src=&quot;data:image/gif;base64,R0lGODlhUAAPAKIAAAsLav///88PD9WqsYmApmZmZtZfYmdakyH5BAQUAP8ALAAAAABQAA8AAAPb
WLrc/jDKSVe4OOvNu/9gqARDSRBHegyGMahqO4R0bQcjIQ8E4BMCQc930JluyGRmdAAcdiigMLVr
ApTYWy5FKM1IQe+Mp+L4rphz+qIOBAUYeCY4p2tGrJZeH9y79mZsawFoaIRxF3JyiYxuHiMGb5KT
kpFvZj4ZbYeCiXaOiKBwnxh4fnt9e3ktgZyHhrChinONs3cFAShFF2JhvCZlG5uchYNun5eedRxM
AF15XEFRXgZWWdciuM8GCmdSQ84lLQfY5R14wDB5Lyon4ubwS7jx9NcV9/j5+g4JADs=
&quot; /&gt;</code></pre></div><p>3) Хранение ресурсов с помощью MHT-файлов. Все ресурсы можно расположить в одном MHT файле. А обращаться к ним через протокол mhtml. <br /></p><div class="codebox"><pre><code>mhtml:index.html!ИдентификаторРесурса</code></pre></div><p>Сохраним веб-страницу с нужными изображениями как MHT-файл. Откроем этот файл блокнотом. <br />Увидим содержимое приблизительно следующего характера:<br /></p><div class="codebox"><pre><code>------------foAU6rlzk2jhLlX6C7PQfA
Content-Disposition: inline
Content-Type: image/gif
Content-Location: http://www.securityfocus.com/images/site/list_arrow.gif
Content-Transfer-Encoding: Base64

R0lGODlhBgAGAIABAP9mAP///yH5BAEAAAEALAAAAAAGAAYAAAIJjI8Hi2wQYEwF
ADs=</code></pre></div><p>Идентификатор ресурса — это значение Content-Location.</p><p>В HTA приложении добавим тег IMG, который будет ссылаться на этот рисунок.<br /></p><div class="codebox"><pre><code>&lt;img src=&quot;mhtml:C:\\index2.mht!http://www.securityfocus.com/images/site/list_arrow.gif&quot; width=100 height=100&gt;</code></pre></div><p>В примере я использовал протокол mhtml. Ниже я выделю каждую часть строки вызова:<br /></p><div class="quotebox"><blockquote><p>mhtml:<strong>{Path To MHT File}</strong>!<em>{Content-Location Value}</em></p></blockquote></div><p>Path To MHT File — содержит полный путь к файлу mht.<br />Content-Location Value — значение взятое из поля Content-Location нужного ресурса.</p>]]></content>
			<author>
				<name><![CDATA[JSmаn]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24434</uri>
			</author>
			<updated>2010-02-26T12:45:34Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=33375#p33375</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: HTA: хранение ресурсов в гипертекстовых приложениях]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=32238#p32238" />
			<content type="html"><![CDATA[<p><em><a href="http://forum.script-coding.com/viewtopic.php?id=3053">Тема для обсуждения</a></em></p><p>Для хранения заготовок в гипертекстовых приложениях можно воспользоваться и уже имеющимися элементами разметки. Например, COMMENT (IE-специфичный тег комментариев). Или SCRIPT, указав язык или тип содержимого, для которых отсутствует обработчик сценариев, например, честно указав type=&#039;text/plain&#039;. В обоих случаях разбор содержимого элементов не производится, а получить его можно через свойство <em>innerHTML</em> или характерное для этих элементов свойство <em>text</em>.</p><p>Простой пример наподобие примера из #1:<br /></p><div class="codebox"><pre><code>&lt;HTML&gt;
&lt;HEAD&gt;
&lt;SCRIPT language=&#039;JavaScript&#039;&gt;
function main() {
  var element = document.getElementById(&quot;MyResource&quot;);
  //alert(element.innerHTML);
  alert(element.text);
  var success=(element.innerText==&quot;&quot;);
  alert(&quot;Проверим элемент на наличие текстовых узлов:\n&quot;+
      &quot;element.innerText = &quot;+element.innerText+&quot;\n&quot;+
      &quot;Как видим, &quot;+(success?&quot;их нет&quot;:&quot;они есть&quot;)+
      &quot; — парсинг элемента &quot;+(success?&quot;&quot;:&quot;не &quot;)+&quot;отключен.&quot;);
}
&lt;/SCRIPT&gt;

&lt;SCRIPT id=&#039;MyResource&#039; type=&#039;text/plain&#039;&gt;&lt;b&gt;text resource&lt;/b&gt;&lt;/SCRIPT&gt;
&lt;/HEAD&gt;

&lt;BODY onLoad=&#039;main();&#039;&gt;&lt;/BODY&gt;&lt;/HTML&gt;</code></pre></div><p>Более развёрнутый пример:<br /></p><div class="codebox"><pre><code>&lt;HTML&gt;
&lt;HEAD&gt;
&lt;META http-equiv=&#039;Content-Type&#039; content=&#039;text/html; charset=windows-1251&#039;&gt;
&lt;TITLE&gt;Ресурсы в комментариях &amp;lt;COMMENT&gt;&lt;/TITLE&gt;


&lt;!-- НАЧАЛО РАЗДЕЛА РЕСУРСОВ --&gt;
&lt;COMMENT id=&#039;resource:Greeting&#039;
&gt;Вас приветствует пример хранения ресурсов в комментариях &lt;COMMENT&gt;!
Это сообщение тоже хранится в ресурсе. (Закрывающий тег &lt;/C OMMENT&gt;
вставить в ресурс в неизменном виде нельзя.)&lt;/COMMENT&gt;

&lt;COMMENT id=&#039;resource:Frame1.html&#039;&gt;&lt;HTML&gt;
&lt;BODY&gt;
&lt;P style=&#039;color:navy;&#039;&gt;Содержимое документа,&lt;BR&gt;загружаемого во фрейм.&lt;/P&gt;
&lt;P&gt;&lt;SMALL&gt;&lt;I&gt;Для просмотра исходного кода этого фрейма
выберите в его контекстном меню соответствующий пункт.&lt;/I&gt;&lt;/SMALL&gt;&lt;/P&gt;
&lt;/BODY&gt;&lt;/HTML&gt;
&lt;/COMMENT&gt;
&lt;!-- КОНЕЦ РАЗДЕЛА РЕСУРСОВ --&gt;


&lt;SCRIPT language=&#039;JavaScript&#039;&gt;
function getResource(resourceID) {
  return document.getElementById(&quot;resource:&quot;+resourceID).text;
}
&lt;/SCRIPT&gt;
&lt;/HEAD&gt;


&lt;BODY bgColor=&#039;silver&#039;&gt;
&lt;IFRAME name=&#039;Frame1&#039; application=&#039;yes&#039; width=&#039;100%&#039; height=&#039;75%&#039;&gt;&lt;/IFRAME&gt;

&lt;SCRIPT language=&#039;JavaScript&#039;&gt;
alert(getResource(&quot;Greeting&quot;));
frames[&quot;Frame1&quot;].document.write(getResource(&quot;Frame1.html&quot;));
frames[&quot;Frame1&quot;].document.close();
&lt;/SCRIPT&gt;
&lt;/BODY&gt;&lt;/HTML&gt;</code></pre></div><p>Для помещения внутрь ресурса текста, совпадающего с закрывающим тегом его элемента («&lt;/COMMENT» или «&lt;/SCRIPT»), необходимо использовать ухищрения. Например, помещать его как «&lt;//COMMENT», а при извлечении из ресурса выполнять замену<br /></p><div class="codebox"><pre><code>… .replace(/(&lt;\/*)\/(?=COMMENT\b)/ig, &quot;$1&quot;)</code></pre></div><p>Для удаления форматирования содержимого ресурса можно воспользоваться заменой каждой последовательности пробельных знаков на один пробел:<br /></p><div class="codebox"><pre><code>… .replace(/\s+/g, &quot; &quot;)</code></pre></div>]]></content>
			<author>
				<name><![CDATA[wisgest]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=3850</uri>
			</author>
			<updated>2010-01-14T13:42:31Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=32238#p32238</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[HTA: хранение ресурсов в гипертекстовых приложениях]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=21903#p21903" />
			<content type="html"><![CDATA[<p>Ресурсы — это часть данных HTML разметки, которая не парсится, и является удобным способом хранения данных. Обращение к таким ресурсам в JavaScript происходит стандартно, например: element.innerHTML.</p><p>Для работы с ресурсами, кроме самого HTA-приложения, нам понадобится дополнительный текстовый файл resource.htc, который должен находиться рядом с нашим приложением:<br /></p><div class="codebox"><pre><code>&lt;PUBLIC:COMPONENT TAGNAME=&quot;data&quot; LITERALCONTENT=&quot;true&quot; /&gt;</code></pre></div><p>Само HTA-приложение:<br /></p><div class="codebox"><pre><code>&lt;html xmlns:resource&gt;
&lt;script&gt;
function main ()
{
  var element = document.getElementsByTagName(&#039;data&#039;)[0];
  alert(element.innerHTML);
  alert(&#039;Парсинг элемента отключен. Проверим его на наличие текстовых узлов. \nelement.innerText \t&#039; + element.innerText+&#039;\n Как мы видим, их нет.&#039;);
}

&lt;/script&gt;
   &lt;?import namespace = &quot;resource&quot; implementation = &quot;resource.htc&quot; /&gt;
   &lt;body onload=&quot;main()&quot;&gt;
      &lt;resource:data&gt;&lt;b&gt;text resource&lt;/b&gt;&lt;/resource:data&gt;
   &lt;/body&gt;
&lt;/html&gt;</code></pre></div><p>Несколько примечаний.<br />Можно хранить текстовые ресурсы просто в переменных JavaScript, но это менее удобно, т.к. придётся чаще использовать экранирование служебных символов, например, переводов строк.<br />Можно также хранить текстовые ресурсы просто с помощью разметки <a href="http://msdn.microsoft.com/en-us/library/ms531078(vs.85).aspx">DHTML</a>, например:<br /></p><div class="codebox"><pre><code>&lt;html&gt;
&lt;script&gt;
function main ()
{
    var element = document.getElementById(&#039;oops&#039;);
    alert(element.innerHTML);
    alert(element.innerText);
}
&lt;/script&gt;
&lt;body onload=&quot;main()&quot;&gt;
    &lt;span id=&quot;oops&quot; style=&quot;display:none&quot;&gt;&lt;b&gt;какой-то текст&lt;/b&gt;&lt;/span&gt;
&lt;/body&gt;
&lt;/html&gt;</code></pre></div><p>Но данные, содержащиеся в таком теге, проходят парсинг. Это может быть плохо тем, что дерево документа будет содержать ненужные объекты, расходуя память (в данном случае — поле innerText).</p><p>Автор идеи — <strong>JSman</strong>.</p>]]></content>
			<author>
				<name><![CDATA[The gray Cardinal]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=2</uri>
			</author>
			<updated>2009-04-21T06:17:07Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=21903#p21903</id>
		</entry>
</feed>
