【发布时间】:2018-08-16 11:07:05
【问题描述】:
我正在看一个教程,其中导师建议为了改善用户体验最好在 </body> 之前添加 <script> 标签,以便脚本在页面内容完全加载后运行。
我尝试了这段代码,我希望看到“hello world!”在任何脚本运行之前,但我的浏览器在其他所有内容出现之前运行 javascript(仅显示带有警报框的空白页面)
<html>
<body>
<p>hello world!</p>
<script>
alert('hey there');
</script>
</body>
</html>
我用 safari/chrome/opera 尝试了这个,得到了相同的结果。我知道我可以使用 jQuery 来解决这个问题,但有人可以解释一下这种行为吗?
感谢@T.J.Crowder,我标记了正确答案,以防万一有人对幕后发生的事情感到好奇,我在这里找到了一个很好的解释: Script is before /body but it runs before page is loaded
【问题讨论】:
-
我猜“页面内容已完全加载”是夸大其词。它没有完全加载,它只是被解释并且元素存在在那里供你使用,但并不意味着它被渲染了。
-
stackoverflow.com/questions/807878/… 查看此链接。它回答了你的问题。
-
大多数现代浏览器会等到脚本完成后再渲染页面。
-
@sodali_ayran - 这是在问一个不同的问题,虽然那里的大多数解决方案都可以工作(因为他们提出了一个糟糕的反模式,使用窗口
load事件),但它不是关闭的好选择这个问题。
标签: javascript html dom