如果我在script标签内调用document.write(),我是否可以相信它会始终在主要浏览器上同时执行(即在页面加载期间和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>
?
最佳答案
如果未延迟脚本标记(<script defer>
),则它们将按出现的顺序运行,如果它们在<head>
或<body>
内部,则它们将在onload
之前运行。
在加载正文之后(实际上在关闭文档之后)使用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>
关于javascript - 在<script>标记内调用document.write()是否安全?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5268638/