`

Script中defer的作用

阅读更多
转自:http://blog.csdn.net/tianyawudie/archive/2009/02/18/3904756.aspx



使用defer属性可以让脚本在整个页面装载完成之后再解析,而非边装载边解析。  
这对于只包涵事件触发的js脚本而言,可以提高整个页面的加载速度。

        DEFER 是脚本程序强大功能中的一个“无名英雄”。你可能从没有使用过它,但是看完这里的介绍后,相信你就离不开它。它告诉浏览器Script段包含了无需立即执行的代码,并且,与SRC属性联合使用,它还可以使这些脚本在后台被下载,前台的内容则正常显示给用户。  
   
   
    最后请注意两点:  
   
    1、不要在defer型的脚本程序段中调用document.write命令,因为document.write将产生直接输出效果。  
   
    2、而且,不要在defer型脚本程序段中包括任何立即执行脚本要使用的全局变量或者函数。


只支持IE   要多浏览器同时测试
感觉defer属性能解决的最主要的问题就是当你在script中需要引用到页面中的对象,但是此页面对象在script脚本执行时还未在页面渲染出来(或还未下载下来,未在IE的内存中分配),这时你就无法放问此对象.使用defer属性后,script脚本会在整个页面下载完成即所有页面对象都已在IE内存中分配好之后再执行,这时就可能对所有页面对象进行访问.

以下为网络上找的资料:

Script中的Defer属性
如果你是一个对系统性能比较关心和在意的人,我想你应该会对Script脚本中的defer属性感兴趣的。
script中的defer属性默认情况下是false的。按照DHTML编程宝典中的描述,对于Defer属性是这样写的:
Using the attribute at design time can improve the download performance of a page because the browser does not need to parse and execute the script and can continue downloading and parsing the page instead.
也就是说:如果是编写脚本的时候加入defer属性,那么浏览器在下载脚本的时候就不必立即对其进行处理,而是继续对页面进行下载和解析,这样会提高下载的性能。
这样的情况有很多种。比如你定义了很多javascript变量,或者在引用文件(.inc)中写了很多的脚本需要处理,那不妨在这些脚本中加入defer属性,对性能的提高肯定有所帮助。
举例如下:
<script language="javascript" defer>
var object = new Object();
....
</script>
因为defer属性默认是为false的,那么在这里<script language="javascript" defer>显式声明defer属性后等同于<script language="javascript" defer=true>
声明了defer属性之后,需要判断是否有别的变量引用了defer脚本块中的变量,否则的话会导致脚本错误的产生

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/tianyawudie/archive/2009/02/18/3904756.aspx

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    深入理解javascript中defer的作用

    JavaScript中的`defer`属性是一个用于`&lt;script&gt;`标签的关键特性,尤其在优化页面加载性能和控制脚本执行顺序方面起到重要作用。它主要适用于外部脚本(即通过`src`属性引用的JavaScript文件),而非内联脚本。下面将...

    浅析script标签中的defer与async属性

    竟然同时有async和defer属性,心想着肯定是前辈老司机的什么黑科技,两个一块儿肯定会发生什么神奇化学反应,于是赶紧怀着一颗崇敬的心去翻书翻文档,先复习一下各自的定义。 二、调查一番 先看看async和defer各自...

    JS中script标签defer和async属性的区别详解

    当`&lt;script&gt;`标签中不包含`defer`或`async`属性时,浏览器会立即加载并执行相应的脚本。在脚本加载和执行完成之前,浏览器会暂停解析后续的HTML文档,这就意味着,如果脚本位于文档中间,浏览器会等待该脚本加载完成...

    JS script脚本中async和defer区别详解

    在JavaScript的世界里,`async` 和 `defer` 是两个在`&lt;script&gt;`标签中用于控制脚本加载和执行方式的关键属性。它们主要用来解决脚本阻塞页面渲染的问题,确保网页的加载性能和用户体验。下面将详细讲解这两个属性的...

    HTML5 script元素async、defer异步加载使用介绍

    &lt;script defer src="siteScript.js" onload="myInit()"&gt;&lt;/script&gt; ``` 总结起来,`async`和`defer`是HTML5为改善网页性能提供的两个关键工具,它们允许开发者更灵活地控制JavaScript的加载,从而提高页面的加载速度...

    &amp;lt;script defer&amp;gt; defer 是什么意思

    当`defer`属性被添加到`&lt;script&gt;`标签中,浏览器会按照脚本在文档中的出现顺序依次下载这些脚本,但不会立即执行。只有在整个HTML文档解析完成(即DOM树构建完成)后,才会按照顺序执行这些带有`defer`属性的脚本。...

    javascript中的用法与意思

    ### JavaScript中的`&lt;script type="text/javascript"&gt;`标签详解 #### 标签含义与作用 在Web开发中,`&lt;script&gt;`标签是HTML文档中用于嵌入或引用JavaScript代码的关键元素之一。它允许开发者直接在HTML文档内部编写...

    关于Script的Defer属性 原创

    1、没有defer属性的运行 [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]2、 [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]PS:运行后再查看一下源文件,你会发现里面的代码都已经执行过了。

    HTML5 对各个标签的定义与规定:script

    &lt;script src="path/to/script.js" defer&gt;&lt;/script&gt; ``` #### `type`属性 - **定义**: 用于指定脚本的MIME类型,默认值为`text/javascript`。虽然在现代浏览器中通常不再需要明确指定,但在某些情况下仍然有用。 -...

    浅谈HTML5 defer和async的区别

    当浏览器遇到`&lt;script&gt;`标签且没有`defer`或`async`属性时,会立即加载并执行脚本。这意味着浏览器会暂停HTML解析,等待脚本加载和执行完成后再继续解析页面剩余部分。这种同步加载和执行的方式可能导致页面渲染的...

    06-defer和async.md

    在前端技术领域,理解`&lt;script&gt;`标签的`defer`和`async`属性的区别是开发中常见的需求,这关系到页面加载性能和脚本执行顺序。本篇文档围绕这两个属性进行解释,并扩展到前端面试相关的知识点。 ### defer和async的...

    JS脚本defer的作用示例介绍

    首先,defer属性是当在&lt;script&gt;标签中使用时,它告诉浏览器延迟执行这个脚本,直到页面的HTML解析完成。这与另外一个属性async不同,async属性允许脚本异步执行,但并不保证脚本按顺序执行。而使用defer的脚本,会...

    lt;script defergt; defer 是什么意思

    文档上说defer中的代码不立即执行,页面会继续载入,那defer中的代码具体在什么时候执行呢?在全部javascript代码载入之后?页面载入之后?onload之前还是之后? 答案是: 并不是说在网页载入时不执行,可以在网页写一...

    关于Javascript中defer和async的区别总结

    没有 defer 或 async,浏览器会立即加载并执行指定的脚本,“立即”指的是在渲染该 script 标签之下的文档元素之前,也就是说不等待后续载入的文档元素,读到就加载并执行。 [removed][removed] 有 async,加载和...

Global site tag (gtag.js) - Google Analytics