2013-02-03 63 views
2

目前我做這個:如何創建代碼HTML文檔DOM對象?

var newdoc = document.implementation.createHTMLDocument("Wrong title"); 
newdoc.open(); 
newdoc.write('<!doctype html><html><head><title>Right title</title></head><body><div id="a_div">Right content</div></body></html>'); 
newdoc.close(); 

然後我試圖獲取有關加載的文件的一些信息,例如:

> newdoc.title 
Right title 
> newdoc.getElementById("a_div").innerHTML 
Right content 

的問題是,它只能在Chrome瀏覽器。在Firefox和Opera上,文檔關閉後DOM似乎不會被加載。我究竟做錯了什麼?

我寫了這個小小提琴說明問題:http://jsfiddle.net/uHz2m/

+2

https://developer.mozilla.org/zh-CN/docs/DOM/DOMImplementation.createHTMLDocument – Hontoni

回答

1

好了,看完我注意到createHTMLDocument()不會創建一個零字節長度的文檔對象的文檔,但一個基本的HTML腳手架像這樣經過:

<!DOCTYPE html> 
<html> 
    <head> 
    <title>Wrong title</title> 
    </head> 
    <body></body> 
</html> 

這就是爲什麼newdoc.write()不能按預期工作。

相反,我可以只取html元素並改變其HTML代碼(corrected fiddle)。

var newdoc = document.implementation.createHTMLDocument("Wrong title"); 
newdoc.documentElement.innerHTML = '\ 
    <!doctype html>\ 
    <html>\ 
    <head>\ 
     <title>Right title</title>\ 
    </head>\ 
    <body>\ 
     <div id="a_div">Right content</div>\ 
    </body>\ 
    </html>';