如果我在脚本标记内调用document.write(),我是否可以相信它总是会在主要浏览器上同时执行(即在页面加载期间和 on onload事件之前) ?
此外,这适用于主流浏览器:
<script ...>
if (condition)
document.write('<div ...>');
else
document.write('<span ...>');
</script>
... // some content.
<script ...>
if (condition)
document.write('</div>');
else
document.write('</span>');
</script>
答案 0 :(得分:4)
如果脚本标记没有延迟(<script defer>
),那么它们按照它们出现的顺序运行,如果它们在<head>
或<body>
内,那么它们将在{onload
之前运行1}}。
在加载正文后(文档实际关闭后)使用document.write
是危险的,因为它会吹走文档。所以
setTimeout(function () { document.write('O Hai'); }, 1000)
是吹走文件的好方法。
他们必须按照出现的顺序写出的原因是,在第一个脚本标记完成执行之前,浏览器无法确定第二个脚本标记是否真的是脚本标记。考虑浏览器要处理的内容
<script>
if (Math.random() < 0.5) {
document.write("<script>");
}
</script>
alert('One'); /*
<script>
alert('Two');
//*/</script>
答案 1 :(得分:1)
最好将这些函数放入函数中并使用body onload事件触发它们。或者,如果您不介意jquery依赖项, $(document).ready()
答案 2 :(得分:0)
document.write的定义是它将内容写入document.write的确切位置。这种行为在浏览器中是一致的。