考虑脚本..
<html>
<head>
<script type="text/javascript">
document.write('TEST');
</script>
</head>
<body>
Some body content ...
</body>
</html>
这很好用,并且'TEST'一词被添加到<body>
但是什么时候
<script type="text/javascript">
window.onload = function(){
document.write('TEST');
}
</script>
使用,然后将主体内容完全替换为“TEST”,即删除旧的主体内容,并且仅添加“TEST”一词。
只有在document.write
函数
window.onload
时才会发生这种情况
我在chrome中试过这个。我有什么错误吗?有什么建议吗?
答案 0 :(得分:9)
document.write()
不稳定。这种行为是不可预测的跨浏览器,你根本不应该使用它。使用innerHTML
或createElement
/ createTextNode
来操纵DOM。
写入已加载但未调用document.open()的文档将自动执行document.open调用。完成编写后,建议调用document.close(),告诉浏览器完成加载页面。您编写的文本将解析为文档的结构模型。在上面的示例中,h1元素成为文档中的节点。
如果document.write()调用直接嵌入HTML代码中,那么它将不会调用document.open()。
等效的DOM代码是:
window.onload = function(){
var tNode = document.createTextNode("TEST");
document.body.appendChild(tNode);
}
答案 1 :(得分:1)
答案 2 :(得分:0)
当文档已满载时,对document.write()
的任何进一步调用都将覆盖文档内容。在致电document.close()
之前,您必须先使用document.write()
以避免覆盖。
答案 3 :(得分:0)
首先创建一个元素,例如div,而不是使用window.onload
事件向div添加内容。
document.write('<div id="afterpostcontent"><\/div>');
window.onload = function()
{
document.getElementById('afterpostcontent').innerHTML = '<span>TEST<\/span>';
}
您可以使用此内容创建外部JavaScript文件,只需在任何地方调用它,例如:
<script src="afterpostcontentcode.js"></script>