Html&推迟属性

时间:2016-01-12 16:11:52

标签: javascript

拥有以下代码:

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 事件后声明。

所以我在等待一个合适的答案......

2 个答案:

答案 0 :(得分:1)

关于onload。 以下是onload属性的定义,取自this page

  

加载对象时会触发onload属性。

     

onload最常用于&lt; body&gt;元素在网页完全加载所有内容(包括图像,脚本文件,CSS文件等)后执行脚本。但是,它也可以用于其他元素(参见&#34;支持的HTML标记&#34;下面)。

因此,onload函数将在加载正文内容后执行,即 - 在内部脚本执行之后。

答案 1 :(得分:-1)

我担心 remdevtec 的答案是不正确的,因为他似乎忘记了我在脚本标记中使用了defer属性,而定义说:

  

此布尔属性设置为向浏览器指示脚本   意味着在解析文档后执行

所以在这种情况下(至少在我看来)外部脚本应该在onload之后执行,但事实并非如此。