>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >[?] Парсинг HTML entity http://forum.mozilla-russia.org/viewtopic.php?id=32200 |
XuTMAH > 08-03-2009 17:05:59 |
Подскажите как наиболее правильно и без создания тяжеловесных XPCOM компонентов распарсить HTML entity из XPCOM JavaScript компонента? Раньше когда весь код работал на уровне отдельно окна, то я создавал через document.createElement новый iframe и запиcывал в него всю строку, потом вручную заменял оставшиеся 4 последовательности < > & и всё было хорошо, но в XPCOM нету объекта document. Есть идея через nsIWindowMediator получать любое окно и всё делать уже через window.document, но нет уверенности что у любого окна будет document. Т.е. основное окно Firefox может быть уже закрыто, а останется маленькое окошко открытое каким-нибудь расширением. |
Anton > 08-03-2009 19:33:14 |
http://xpoint.ru/forums/programming/XUL/thread/42796.xhtml В XPCOM нет javascript-ового объекта DOMParser, но можно создать объект с интерфейсом nsIDOMParser. Выделить код Код:var parser = Components. classes ["@mozilla.org/xmlextras/domparser;1"]. createInstance (Components. interfaces. nsIDOMParser); var s = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><root>&#9829;&</root>'; s = parser. parseFromString (s, "text/xml"). documentElement. textContent; p. s. Есть еще nsIScriptableUnescapeHTML (https://developer.mozilla.org/En/NsIScriptableUnescapeHTML). С ним чуть проще: Выделить код Код:var gUnescapeHTML = Components.classes["@mozilla.org/feed-unescapehtml;1"] .getService(Components.interfaces.nsIScriptableUnescapeHTML); var s = "&#9829;&"; s = gUnescapeHTML. unescape (s); |