如果我在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/

10-10 00:19