关于Js脚本的延迟执行
2014-12-12 23:44
183 查看
关于标签,我们有一般会放在两个地方,一个是在标签的内部,另一个是放在前面。这一次我们着重讲解一下放在标签内部。在我们用Js操作DOM元素时,如果不延时执行,DOM元素其实是根本还没有被渲染出来的。所以各种
1、标签属性
这个是HTML5的属性,在标签内部标注了
async属性:Js脚本加载和文档渲染是异步进行的, 但当脚本加载完成后便执行。所以当两个外部脚本都有这个属性的时候,我们是无法确定哪个文件先执行,很难解决依赖问题。
defer属性:Js脚本加载和文档渲染也是异步进行的,不同的地方是,它是等DOM元素渲染完后才会执行。并且按照HTML标准规定,它是会按顺序执行的,并且是在
2、关于这个
这个事件我们是用过挺多的,例如Jquery里的
3、最后一个
在这个
最后,我们习惯把Js脚本放在前是最好的,它是会在DOM渲染后便执行,可以兼容更多旧的浏览器。
哎哟用Markdown好辛苦,写的东西感觉都怪怪的,调皮不起来了~~看来要多练习
getElementById、
getElementsByTagName实质上是获取不到的,也谈不上如何进行Style样式的修改或者更多的操作。所以当我们把Js脚本放在了标签里,我们需要延时执行Js脚本文件。
1、标签属性defer
和async
这个是HTML5的属性,在标签内部标注了defer或者
async。我们来看一下这两个属性是做什么的。
async属性:Js脚本加载和文档渲染是异步进行的, 但当脚本加载完成后便执行。所以当两个外部脚本都有这个属性的时候,我们是无法确定哪个文件先执行,很难解决依赖问题。
defer属性:Js脚本加载和文档渲染也是异步进行的,不同的地方是,它是等DOM元素渲染完后才会执行。并且按照HTML标准规定,它是会按顺序执行的,并且是在
DOMContentLoaded这个事件触发之前发生。这个会更符合我们的实际要求。
2、关于这个DOMContentLoaded
事件
这个事件我们是用过挺多的,例如Jquery里的ready事件。这个事件就是当DOM元素渲染结束后触发的,和
load事件不同,
load事件我接下来会说。那我们该怎么使用这个事件呢,当然也是很简单的啦,直接看看代码。
document.addEventListener("DOMContentLoaded", function(){ /* 放置代码 */ }, false);
3、最后一个load
事件
在这个load事件里,会在DOM元素渲染并加载完毕后才会触发。那在实际到底加载完毕是指的什么呢,最明显的就是加载图片。如果仅仅是DOM渲染后便去获取图片的宽度,图片是完全没有加载完的。所以这个时候我们需要用
load事件,这个事件会在图片加载完后触发。但是如果我们不需要图片加载后再执行Js脚本,我们最好不使用
load事件,因为这会导致延迟很久才执行,造成用户体验不佳。所以我们什么时候用
DOMContentloaded和
load,我们要作出一个选择。
最后,我们习惯把Js脚本放在前是最好的,它是会在DOM渲染后便执行,可以兼容更多旧的浏览器。
哎哟用Markdown好辛苦,写的东西感觉都怪怪的,调皮不起来了~~看来要多练习
相关文章推荐
- 关于 JS 的脚本执行及 SetTimeOut延迟时间为0的详解
- document.write 方式引入外部 JS 文件导致脚本程序执行顺序不同以及 DOM 树更新延迟问题
- 关于Jquery,js脚本加载执行先后顺序的一些事
- 延迟js脚本的执行
- asp.net关于Page_Load方法和执行js脚本顺序的不同所带来的问题
- 关于js延迟执行问题
- Html中JS脚本执行顺序简单举例说明
- 关于ASP中脚本执行顺序的最最最健全的讲解 阴阳冕
- 关于JS调用外部可执行程序中路径空格问题
- 技术总结:关于JS执行前台和后台顺序的.另外一个是前后和后台变量的交互的.
- Html中JS脚本执行顺序
- 关于JS调用Applet的执行权限的问题
- Windows Script Control msscript.ocx c# .net 执行js 脚本
- 关于asp.net中javascript等脚本不能执行的原因.
- JS 事件延迟执行说明分析
- JS 事件延迟执行说明分析
- js Date自定义函数 延迟脚本执行
- js关于隔几秒中执行一个事件的写法
- (三)关于SQL脚本在DbCommand里的执行
- 关于在服务器端执行JS代码