JavaScript中document.write的那点事
document.write()方法可以用在两个方面:
页面载入过程中用实时脚本创建页面内容,以及用延时脚本创建本窗口或新窗口的内容。该方法需要一个字符串参数,它是写到窗口或框架中的HTML内容。这些字符串参数可以是变量或值为字符串的表达式,写入的内容常常包括HTML标记语言。
在载入页面后,浏览器输出流自动关闭。在此之后,任何一个对当前页面进行操作的document.write()方法将打开一个新的输出流,它将清除当前页面内容(包括源文档的任何变量或值)。因此,加入希望用脚本生成的HTML替换当前页面,就必须把HTML内容连接起来赋给一个变量,使用一个document.write()方法完成写操作。不必清除文档并打开一个新数据流,一个document.write()调用就可以完成所有的操作。
脚本向窗口写完内容后,必须关闭输出流。在延时脚本的最后一个document.close()方法。不这样做就不能显示图像和表单,并且任何后面调用的document.write()只会把内容追加到页面后,而不会清除现有内容来写入新值。
一般在下列情景下可以利用document.write来完成某些操作:
1.加载需要JS脚本使用的CSS文件
<script>
document.write('<link rel="stylesheet" href="style.css">');
</script>
2.在新的窗口写入新的页面数据时(新建一个页面就不会重写之前的)
一个标准的document.write:
document.open();
document.write('anything');
document.close();
优点:能够直接修改文档流。
弊端:
1.在非loading阶段document.write会清除已经加载的页面;
2.document.write不能再XHTML中使用;
3.嵌入script中的document.write不能给任意节点添加子节点,因为它是随着DOM的构建执行的;
4.利用document.write写入HTML字符串并不是一个好方法,它有违DOM操作的概念;
5.利用document.write添加script加载外部脚本时,浏览器的HTML解析会被script的加载所阻塞。