ParseHTML в аддоне Firefox с использованием parseFragment - PullRequest
2 голосов
/ 08 марта 2012

Вот функция parse

Ajax:
{
    ParseHTML: function(aHTMLString)
    {
        var html = document.implementation.createDocument("http://www.w3.org/1999/xhtml", "html", null),
        body = document.createElementNS("http://www.w3.org/1999/xhtml", "body");
        html.documentElement.appendChild(body);

        body.appendChild(Components.classes["@mozilla.org/feed-unescapehtml;1"]
            .getService(Components.interfaces.nsIScriptableUnescapeHTML)
            .parseFragment(aHTMLString, false, null, body));

        return body;
    }
}

Здесь я пытаюсь использовать синтаксический анализ в http-ответе (для санации кода):

var newdoc = Ajax.ParseHTML(o.responseText);

Но, когда я пытаюсь использовать:

newdoc.getElementById('teste');

возвращает мне ошибку: TypeError: newdoc.getElementById is not a function

Я что-то не так делаю? Это как-то связано с documentType?

Кроме того, эта функция удаляет все атрибуты href="" в тегах a, например, возможно, проблемы связаны ...

1 Ответ

2 голосов
/ 08 марта 2012

getElementById определяется только для объекта document, поскольку идентификатор должен быть уникальным в документе. По этой причине не имело смысла определять getElementById для объекта элемента.

Следующие методы будут работать:

newdoc.querySelector('#teste');
newdoc.ownerDocument.getElementById('teste');

Что касается создания документа, возможно, вы заинтересованы в DOMParser или хотите использовать document.implementation.createHTMLDocumentHTML).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...