`
freeman983
  • 浏览: 229712 次
社区版块
存档分类
最新评论

JS脚本defer的作用

阅读更多
<script src="../xxxx.js" defer></script>

中的defer作用是文档加载完毕了再执行脚本,这样回避免找不到对象的问题---有点问题
<button id="myButton" onclick="alert('ok')">test</button>
<script>
myButton.click();
</script>


<script>
myButton.click();
</script>
<button id="myButton" onclick="alert('ok')">test</button>


<script defer>
function document.body.onload() {
alert(document.body.offsetHeight);
}
</script>


加上 defer 等于在页面完全在入后再执行,相当于 window.onload ,但应用上比 window.onload 更灵活!

defer是脚本程序强大功能中的一个“无名英雄”。它告诉浏览器Script段包含了无需立即执行的代码,并且,与SRC属性联合使用,它还可以使这些脚本在后台被下载,前台的内容则正常显示给用户。

最后请注意两点:
1、不要在defer型的脚本程序段中调用document.write命令,因为document.write将产生直接输出效果。
2、而且,不要在defer型脚本程序段中包括任何立即执行脚本要使用的全局变量或者函数。

一个常用的优化性能的方法是:当脚本不需要立即运行时,在<SCRIPT>标签中设置“defer”属性。 (立即脚本没有被包含在一个function块中,因此会在加载过程中执行。) 设置“defer”属性后,IE就不必等待该脚本装载和执行完毕。这样页面加载会更快。一般来说,这也表明立即脚本最好放在function块中,并在 document或者body对象的onload 句柄中处理该函数。在有一些脚本需要依赖用户操作而执行时----例如点击按钮,或者移动鼠标到某个区域----使用该属性非常有用。但当有一些脚本需要在页面加载过程中或加载完成后执行,使用defer属性得到的好处就不太大.
分享到:
评论

相关推荐

    JS脚本defer的作用示例介绍

    defer作用是文档加载完毕了再执行脚本,这样回避免找不到对象的问题,下面有个不错的示例,感兴趣的朋友可以参考下

    浏览器环境下JavaScript脚本加载与执行探析之defer与async特性

    defer和async特性相信是很多JavaScript开发者”熟悉而又不熟悉”的两个特性,从字面上来看,二者的功能很好理解,分别是”延迟脚本”和”异步脚本”的作用。...在《浏览器环境下JavaScript脚本加载与执行探

    深入理解javascript中defer的作用

    很多人都已经把 Javascript的用的炉火纯青了,但见到defer未必就知道他是...中的defer作用是文档加载完毕了再执行脚本,这样回避免找不到对象的问题—有点问题 代码如下:&lt;button id=”myButton” onclick=”alert(‘o

    Defer-JS:将脚本的加载推迟到页面加载完成后

    延迟JS 将脚本的加载推迟到页面完成加载之后。 将脚本放在页面底部、使用 defer 属性... 只需将脚本从 defer.js 文件中复制出来,并将其放置在结束正文标记之前的脚本标记中(当然,将您的脚本添加到数组并删除注释)。

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

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

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

    主要介绍了JS script脚本中async和defer区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    浏览器环境下JavaScript脚本加载与执行探析之动态脚本与Ajax脚本注入

    在《浏览器环境下JavaScript脚本加载与执行探析之defer与async特性》中,我们研究了延迟脚本(defer)和异步脚本(async)的执行时机、浏览器支持情况、浏览器bug以及其他的细节问题。而除了defer和async特性,动态脚本...

    js的[defer]和[async]属性

    使用async属性加载JavaScript,这样整个脚本就可以异步加载和执行。 [removed]标签的defer属性——告诉浏览器该脚本不会在页面加载完成之前操作DOM,脚本将会和其他资源文件并行下载; [removed]标签的async属性...

    JavaScript无阻塞加载和defer、async详解

    下载是异步的没问题,但是每个javascript执行的时候还是同步的,就是先出现的script标签一定是先执行,即使是并行下载它是最后一个下载完成的,除非标有defer的script标签。任何javascript在执行的时候都会中断当前...

    async与defer的区别

    形象的描述了async与defer的区别,...defer是延迟执行,在浏览器看起来的效果像是将脚本放在了 body后面一样(虽然按规范应该是在 DOMContentLoaded事件前,但实际上不同浏览器的优化效果不一样,也有可能在它后面)

    浅谈原生JS中的延迟脚本和异步脚本

    一、延迟脚本 defer HTML4.0中为[removed] 标签添加了个defer属性。属性的用途是表民脚本在执行时不会影响页面的构造。 脚本会被延迟到页面加载完毕的时候,执行。也就是当浏览器解析到&lt;/html&gt; 标签后才会执行...

    如何让动态插入的javascript脚本代码跑起来。

    首先,声明方法很多种,直接间接的方法都有,只罗列一般情况下的两种模式: 假设我们要装入的代码是a.js: var foo=function(){ [removed](“I am a.js content foo() function by never-online”);...

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

    向html页面中插入javascript代码的主要方法就是通过script标签。其中包括两种形式,第一种直接在script标签之间插入js代码,第二种即是通过src属性引入外部js文件。由于解释器在解析执行js代码期间会阻塞页面其余...

    My97DatePicker日期控件asp.net

    &lt;script language="javascript" type="text/javascript" src="../../../JavaScript/My97DatePicker/WdatePicker.js" defer="defer"&gt; 3,控件里引用脚本 onFocus="WdatePicker({dateFmt:'yyyy-MM-dd',...

    js异步加载的三种解决方案

    (1) defer,只支持IE defer属性的定义和用法(我摘自w3school网站) defer 属性规定是否对脚本执行进行延迟,直到页面加载为止。 有的 javascript 脚本 [removed] 方法来创建当前的文档内容,其他脚本就不一定是了...

    javascript 文件的同步加载与异步加载实现原理

    延迟脚本执行,相当于将script标签放入页面body标签的底部,js脚本会在document的DOMContentLoaded之前执行。除IE和较新版本的Firefox外,其他浏览器并未支持。 language: 已废弃。大部分浏览器会忽略该值。 src: 可...

    asyncjs:稍微不同的 JavaScript 加载器和依赖管理器

    与许多其他脚本加载器不同,asyncJS 可以异步加载内联函数和脚本字符串以及外部 JavaScript 文件。 asyncJS使用类似 Defer 的队列来跟踪任务,允许您附加额外的任务、附加额外的回调以及处理回调中的错误,使其...

Global site tag (gtag.js) - Google Analytics