2

目前我正在这样做:

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/

4

1 回答 1

1

好的,在阅读了文档后,我注意到createHTMLDocument()它并没有创建一个零字节长度的文档对象,而是一个基本的 HTML 脚手架,如下所示:

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

这就是为什么newdoc.write()不能按预期工作的原因。

相反,我可以只获取html元素并更改其 HTML 代码(更正的小提琴)。

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>';
于 2014-03-25T20:06:09.837 回答