Полезная информация

Хотите узнать больше о расширениях? Посмотрите ролики, рассказывающие о работе с расширениями Firefox.

№108-03-2009 17:05:59

XuTMAH
Участник
 
Группа: Members
Зарегистрирован: 23-05-2007
Сообщений: 32
UA: Foxware 0.0

[?] Парсинг HTML entity

Подскажите как наиболее правильно и без создания тяжеловесных XPCOM компонентов распарсить HTML entity из XPCOM JavaScript компонента?
Надо распарсить всякие последовательности вида & #9829; &.

Раньше когда весь код работал на уровне отдельно окна, то я создавал через document.createElement новый iframe и запиcывал в него всю строку, потом вручную заменял оставшиеся 4 последовательности < >   & и всё было хорошо, но в XPCOM нету объекта document.

Есть идея через nsIWindowMediator получать любое окно и всё делать уже через window.document, но нет уверенности что у любого окна будет document. Т.е. основное окно Firefox может быть уже закрыто, а останется маленькое окошко открытое каким-нибудь расширением.

Отсутствует

 

№208-03-2009 19:33:14

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.0
Веб-сайт

Re: [?] Парсинг HTML entity

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>&#38;#9829;&amp;</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 = "&#38;#9829;&amp;";
s = gUnescapeHTML. unescape (s);

Отредактировано Anton (08-03-2009 19:50:08)


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]