Как отобразить HTML-страницу из строки - PullRequest
2 голосов
/ 27 июня 2010

Я генерирую некоторый HTML-контент динамически, например:

var content = "<head><title>testtitle</title></head><body>testbody</body>";

Затем я получаю новую вкладку с about:blank, и теперь я хочу отобразить мой сгенерированный HTML-файл на этой вкладке.Если contentDocument вкладки newDoc, я подумаю, что просто сделаю:

newDoc.documentElement.innerHTML = content;

Однако это не сработает.Кажется, не имеет никакого эффекта вообще.В firebug он, кажется, работает один раз, но в то же время запирает firebug, так что я не могу проверить, вид источника остается неизменным.t изменить отображаемую пустую страницу, также не в исходном представлении, но если я оповестю newDoc.documentElement.innerHTML, она отразит изменения.Кажется, что это не тот документ, который больше не отображается.Странно.

Итак, мой вопрос: как мне это сделать?В частности, в расширении Firefox, если это важно.

Возможно, существует формат href с "text: // ..." вместо "file: // ..." или чем-то еще?

Обновление:

Оказывается, я не могу заменить таким образом только полный код, я даже не могу body.appendChild, но я уверен, что сделал этораньше, поэтому я сравнил.Здесь я получаю свой документ следующим образом:

var tab = getBrowser().addTab(); //make new tab
getBrowser().selectedTab = tab;  //bring it to front
var browser = getBrowser().getBrowserForTab(tab); //get the window of the tab
var newDoc = browser.contentDocument;   

Теперь я могу сделать:

newDoc.location.href = url;

И это работает, он загружает данную страницу.Поэтому я подумал, что это правильный документ, но если я не назначу URL, а вместо этого попытаюсь создать домен самостоятельно, он просто не будет работать.

Если я внесу эти изменения в window.content.документ после вкладки впереди, работает.Так почему же эти документы отличаются?Если newDoc неправильный, почему назначение местоположения что-то делает?

Хотя я могу заставить его работать сейчас, мне не особенно нравится решение получить документ, переместив вкладку вперед изатем захватывает документ window.content, который выглядит как хак и зависит от времени.

1 Ответ

0 голосов
/ 11 января 2012

Я только что нашел изящный метод jQuery, который может выполнить это: http://api.jquery.com/html/#html2

Я создал страницу с кнопкой, которая вызывает скрипт:

$("html").html("<span>Hello <b>World</b></span>");

Это заменяет всю страницу DOM.

...