Как я могу включить строку HTML в объект DOM в расширение Firefox?

голоса
19

Я загрузки веб-страницы (тег суп HTML) с XMLHttpRequest, и я хочу, чтобы взять выходной и превратить его в DOM объект, который я могу затем запустить XPATH запросы на. Как конвертировать из строки в объект DOM?

Оказывается , что общее решение создать скрытый IFRAME и выбросить содержимое строки в этом. Там было говорить об обновлении DomParser поддерживать текст / html , но , как в Firefox 3.0.1 вы все еще получаете , NS_ERROR_NOT_IMPLEMENTEDесли вы попробуете.

Есть ли вариант помимо использования скрытой IFrame трюка? А если нет, что это лучший способ сделать IFrame трюк, чтобы ваш код работает вне контекста каких-либо в настоящее время открытых вкладок (так что закрытие вкладки не завинчивать код, и т.д.)?

Это пример того , почему я ищу решение другого , чем IFrame хак, если я должен написать все , что код , чтобы иметь надежное решение, то я предпочел бы продолжать искать что - то другое.

Задан 06/08/2008 в 20:08
источник пользователем
На других языках...                            


5 ответов

голоса
7

Ajaxian на самом деле был пост на вставке / извлечение HTML из фрейма сегодня. Вы , вероятно , можно использовать в JS фрагмент кода они размещены там.

Что касается обработки закрытия / вкладки браузера, вы можете прикрепить к onbeforeunload ( http://msdn.microsoft.com/en-us/library/ms536907(VS.85).aspx события) и делать все , что вам нужно сделать ,

Ответил 06/08/2008 в 21:37
источник пользователем

голоса
4

Попробуй это:

var request = new XMLHttpRequest();

request.overrideMimeType( 'text/xml' );
request.onreadystatechange = process;
request.open ( 'GET', url );
request.send( null );

function process() { 
    if ( request.readyState == 4 && request.status == 200 ) {
        var xml = request.responseXML;
    }
}

Обратите внимание на overrideMimeType и responseXML . Является «завершена».
readyState == 4

Ответил 06/08/2008 в 20:13
источник пользователем

голоса
1

Есть ли вариант помимо использования скрытой IFrame трюка?

К сожалению, нет, не сейчас. В противном случае код microsummary вы указываете будет использовать его вместо.

А если нет, что это лучший способ сделать IFrame трюк, чтобы ваш код работает вне контекста каких-либо в настоящее время открытых вкладок (так что закрытие вкладки не завинчивать код, и т.д.)?

Код, который вы цитируемый использует недавнее окно браузера, поэтому закрытие вкладок не влияет на разборе. Закрытие этого окна браузера прервет ваш груз, но вы можете иметь дело с ним (обнаружить, что нагрузка будет прервана и перезапустить его в другом окне, например), и это происходит не очень часто.

Вам нужно окно DOM для IFrame, чтобы работать должным образом, так что нет чистого решения в данный момент (если вы заинтересованы в использовании Mozilla анализатора).

Ответил 12/08/2008 в 19:56
источник пользователем

голоса
1

Итак, вы хотите, чтобы загрузить веб-страницу в качестве объекта XML с помощью JavaScript, но вы не хотите использовать веб-страницу? Так как вы не имеете никакого контроля над тем, что пользователь будет делать (закрытие вкладки или окна или этажерку), вы должны были бы сделать это как Dashboard виджет OSX или какое-либо отдельное приложение. Расширение Firefox также будет работать, если вы не должны беспокоиться о пользователе закрытия браузера.

Ответил 06/08/2008 в 21:22
источник пользователем

голоса
1

Попробуйте создать DIV

document.createElement( 'div' );

А затем установить тег суп HTML к innerHTML из дел. Браузер должен обрабатывать, что в XML, который затем можно разобрать.

Свойство innerHTML принимает строку, которая определяет действительное сочетание текста и элементов. Когда свойство innerHTML установлено, то данная строка полностью заменяет существующее содержание объекта. Если строка содержит HTML-тег, строка обрабатывается и форматируется как он будет помещен в документ.

Ответил 06/08/2008 в 20:59
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more