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

How to create a HTML document DOM object from code?

本文关键字:文档 DOM 对象 HTML 创建 代码      更新时间:2023-09-26

目前我正在这样做:

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/

好的,在阅读文档后,我注意到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>';