拥有以下代码:
DoSomething
的script.js:
Initialize
defer属性似乎不起作用。输出是:
<html>
<head>
<script>
function elem_onload() {
console.log("elem_onload");
};
</script>
</head>
<body onload="elem_onload()">
<script type="text/javascript" src="script.js" defer></script>
</body>
</html>
是否带有延迟属性。不应该是
console.log("external script");
是否定义了延迟?
我想说明我的答案与
不重复How exactly does <script defer=“defer”> work?
引用的推荐答案是内联脚本,浏览器行为对我来说很明显 - 它只是忽略external script
elem_onload
。我的问题是关于外部脚本,在这种情况下,浏览器应该执行外部延迟脚本
解析文档后
因为文档在elem_onload
external script
事件后声明。
所以我在等待一个合适的答案......
答案 0 :(得分:1)
关于onload
。
以下是onload
属性的定义,取自this page。
加载对象时会触发onload属性。
onload最常用于&lt; body&gt;元素在网页完全加载所有内容(包括图像,脚本文件,CSS文件等)后执行脚本。但是,它也可以用于其他元素(参见&#34;支持的HTML标记&#34;下面)。
因此,onload
函数将在加载正文内容后执行,即 - 在内部脚本执行之后。
答案 1 :(得分:-1)
我担心 remdevtec 的答案是不正确的,因为他似乎忘记了我在脚本标记中使用了defer
属性,而定义说:
此布尔属性设置为向浏览器指示脚本 意味着在解析文档后执行
所以在这种情况下(至少在我看来)外部脚本应该在onload
之后执行,但事实并非如此。