javascript document.innerHTML设置整个文档的内容

Web*_*ner 33 html javascript dom innerhtml

如何innerHTML使用javascript设置HTML文档或整个内容?

例如,我的文档看起来像这样:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta http-equiv="Content-language" content="en"/>
    <title>Webpage Generator</title>
    <script type="text/javascript">
    var newDocument = "&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot; \n\t&quot;http://www.w3.org/TR/html4/loose.dtd&quot;&gt;\n&lt;html&gt;\n&lt;head&gt;\n\t&lt;title&gt;Greetings!&lt;/title&gt;\n&lt;/head&gt;\n&lt;body&gt;\n\t&lt;p&gt;Howdy!&lt;/p&gt;\n&lt;/body&gt;\n&lt;/html&gt;";
    document.innerHTML = newDocument;
    </script>
</head>
<body>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

但是浏览器会加载以下HTML:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <title>Greetings!</title>
</head>
<body>
    <p>Howdy!</p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

Mat*_*ens 29

document.innerHTML 是HTML5中的新功能,并非所有浏览器都支持.

document.documentElement指的是文档的根元素,在本例中是<html>元素.

所以,你可以设置document.documentElement.innerHTML.请注意,由于DOCTYPE不属于此范围,因此不需要将其包括在内innerHTML.

示例(尝试在浏览器的JS控制台中运行):

document.documentElement.innerHTML = '<title>Test</title><p>LOLWAT';
Run Code Online (Sandbox Code Playgroud)

更新: document.innerHTML从HTML规范转移到DOM解析和序列化规范,后来被删除.建议的替代方法是使用DOMParser:

var doc = (new DOMParser).parseFromString('<!doctype html><title>wat</title>', 'text/html');
Run Code Online (Sandbox Code Playgroud)

不幸的是,在撰写本文时,大多数浏览器还不支持HTML.


wch*_*gin 28

如果你不想使用innerHTML,你可以使用document.write(newDocument);.

如果文档没有完全加载,你也需要放好document.open()(感谢bažmegakapa).

  • @inquisitive如果你在文档加载后运行这个命令,它也会发出一个`document.open()`调用.所以基本上一切都会被清除.[jsFiddle演示](http://jsfiddle.net/URgmZ/1/) (3认同)

fre*_*727 11

使用此代码(在加载当前文档后):

document.open("text/html", "replace");
document.write(htmlCode);  // htmlCode is the variable you called newDocument
document.close();
Run Code Online (Sandbox Code Playgroud)

这里的现场例子:http://www.w3schools.com/jsref/tryit.asp? filename = tryjsref_doc_open

希望这个帮助;)