Я сейчас пишу загрузочное расширение Firefox 4.
Вот моя история:
Когда я использую @mozilla.org/xmlextras/xmlhttprequest; 1, nsIXMLHttpRequest , содержимое целевого URL может быть успешно загружено с помощью req.responseText.
Я проанализировал responseText в DOM с помощью метода createElement и свойства innerHTML в элемент BODY.
Кажется, все успешно.
Однако существует проблема с кодировкой символов (кодировка).
Поскольку мне нужно, чтобы расширение определяло кодировку целевых документов, переопределяет Тип запроса Mine с text / html; charset = blahblah .. кажется, не удовлетворяет мою потребность.
Я пробовал @mozilla.org/intl/utf8converterservice; 1, nsIUTF8ConverterService , но похоже, что XMLHTTPRequest не имеет ScriptableInputStream или даже любого InputStream или читаемого потока.
Я не имею представления о чтении содержимого целевого документа в подходящем, автоматически определяемом кодировке, независимо от функции автоматического определения кодировки символов в графическом интерфейсе или кодировки, прочитанной в метатеге заголовка содержимого документ.
РЕДАКТИРОВАТЬ: Было бы целесообразно, если бы я анализировал весь документ, включая теги HTML, HEAD, BODY, в объект DOM, но не загружая расширенные документы, такие как файлы js, css, ico?
РЕДАКТИРОВАТЬ: Метод статьи в MDC под названием " HTML to DOM ", который использует @mozilla.org/feed-unescapehtml; 1, nsIScriptableUnescapeHTML является неуместным , так как анализируется с большим количеством ошибка и ошибка с baseURI Нельзя установить в типе текст / HTML . Все атрибуты HREF в элементах A пропущены , если он содержит относительный путь .
РЕДАКТИРОВАТЬ # 2: Было бы хорошо, если бы были какие-либо методы, которые могут конвертировать входящий responseText в читаемые строки кодировки UTF-8. : -)
Любые идеи или работы для решения проблемы кодирования приветствуются. : -)
PS. целевые документы: универсальные , поэтому нет конкретного набора символов (или ... preknown ) и Конечно, не только UTF8, как это уже определено по умолчанию.
SUPP:
До сих пор у меня есть две основные идеи решения этой проблемы.
Может кто-нибудь помочь мне разобраться с названиями модулей и методов XPCOM?
К Укажите кодировку при анализе контента в DOM.
Сначала нужно узнать кодировку документа (извлекая метатег заголовка или заголовок).
Тогда
- найдите метод, который может указывать кодировку при разборе содержимого тела.
- найдите метод, который может анализировать как голову, так и тело.
В Преобразовать или Сделать Входящий responseText в / быть UTF-8, поэтому синтаксический анализ элемента DOM с набором символов по умолчанию UTF-8 все еще работает.
X кажется не практичным и разумным: переопределение типа Mine с помощью charset является реализацией этой идеи, но мы не можем заранее знать charset перед началом запроса.