2010-06-27 67 views
2

顯示HTML頁面我產生一些HTML內容動態地想:如何從字符串

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

然後,我讓自己與about:blank一個新的標籤,現在我想在這個選項卡中顯示我生成html。如果該標籤的contentDocument是newDoc,我認爲我只是這樣做:

newDoc.documentElement.innerHTML = content; 

但是,這是行不通的。它似乎根本沒有效果。在firebug中,它似乎只工作了一次,但同時擰了一下螢火蟲,所以我無法驗證,源視圖保持不變。

我然後設法:

newDoc.getElementsByTagName("head")[0].innerHTML = headContent; 
newDoc.body.innerHTML = bodyContent; 

不改變顯示的空白頁,也沒有在源視圖,但如果我提醒newDoc.documentElement.innerHTML,它反映了變化。看起來這不是再顯示的文檔。奇怪的。

所以我的問題:我該怎麼做?特別是在Firefox擴展中,如果這很重要。

有沒有可能是一個帶有「text:// ...」而不是「file:// ...」或什麼的href格式?

更新:

事實證明,我不僅可以取代完整的代碼這種方式,我甚至不能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,而是嘗試自己建立dom,它根本不起作用。

如果我在選項卡前面對window.content.document進行了更改,它將起作用。那麼這些文件如何不同?如果newDoc是錯誤的,那麼分配一個位置怎麼做?

儘管我現在可以開始工作,但我並不特別喜歡通過將選項卡放在前面然後抓取window.content文檔來獲取文檔的解決方案,該文檔感覺像是黑客並且取決於時間。

+6

是的,重要的是你在談論Firefox擴展,因爲編程模型與Web內容編程有很大不同。 – Pointy 2010-06-27 11:45:06

回答

0

我剛剛發現了一個漂亮的jQuery的方法可能做到這一點:http://api.jquery.com/html/#html2

我創建了一個頁面調用腳本按鈕:

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

這將替換整個頁面的DOM。

+2

他說他正在編寫一個Firefox擴展。 – 2012-01-10 21:38:45