gpt4 book ai didi

javascript - 在 <script> 标签内调用 document.write() 是否安全?

转载 作者:搜寻专家 更新时间:2023-10-31 23:13:20 26 4
gpt4 key购买 nike

如果我在脚本标记内调用 document.write(),我是否可以相信它会在主要浏览器上始终同时执行(即,在页面加载期间和 before 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在 body 被加载之后(在文档实际关闭之后)是危险的,因为它会吹走文档。所以

setTimeout(function () { document.write('O Hai'); }, 1000)

是吹走文档的好方法。

它们必须按出现的顺序写出来的原因是,在第一个脚本标签执行完毕之前,浏览器无法确定第二个脚本标签是否真的是一个脚本标签。考虑浏览器必须做什么来处理

<script>
if (Math.random() < 0.5) {
document.write("<script>");
}
</script>
alert('One'); /*
<script>
alert('Two');
//*/</script>

关于javascript - 在 &lt;script&gt; 标签内调用 document.write() 是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5268638/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com