如何从代码中创建HTML文档DOM对象?

时间:2013-02-03 01:53:12

标签: javascript 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/

1 个答案:

答案 0 :(得分: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>';