顯示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文檔來獲取文檔的解決方案,該文檔感覺像是黑客並且取決於時間。
是的,重要的是你在談論Firefox擴展,因爲編程模型與Web內容編程有很大不同。 – Pointy 2010-06-27 11:45:06