简介:这是jquery的$(document).ready()和onload的加载顺序的详细页面,介绍了和javascript有关的知识
最近在改一个嵌入在frame中的页面的时候,使用了jquery做效果,而页面本身也绑定了onload事件。改完后,Firefox下测试正常流畅,IE下就要等个十几秒jquery的效果才出现,黄花菜都凉了。
起初以为是和本身onload加载的方法冲突。网上普遍的说法是$(document).ready()是在页面DOM解析完成后执行,而onload事件是在所有资源都准备完成之后才执行,也就是说$(document).ready()是要在onload之前执行的,尤其当页面图片较大较多的时候,这个时间差可能更大。可是我这页面分明是图片都显示出来十几秒了,还不见jquery的效果出来。
删了onload加载的方法试试,结果还是一样,看来没有必要把原本的onload事件绑定也改用$(document).ready()来写。那是什么原因使得Firefox正常而IE就能呢?接着调试,发现IE下原来绑定的onload方法竟然先于$(document).ready()的内容执行,而Firefox则是先执行$(document).ready()的内容,再执行原来的onload方法。这个和网上的说法似乎不完全一致啊,呵呵,有点意思,好像越来越接近真相了。
翻翻jquery的源码看看$(document).ready()是如何实现的吧:
复制代码 代码如下:
if ( jQuery.browser.msie && window == top ) (function(){
if (jQuery.isReady) return;
try {
document.documentElement.doScroll("left");
} catch( error ) {
setTimeout( arguments.callee, 0 );
return;
}
// and execute any waiting functions
jQuery.ready();
})();
jQuery.event.add( window, "load", jQuery.ready );
结果很明了了,IE只有在页面不是嵌入frame中的情况下才和Firefox等一样,先执行$(document).ready()的内容,再执行原来的onload方法。对于嵌入frame中的页面,也只是绑定在load事件上执行,所以自然是在原来的onload绑定的方法执行之后才轮到。而这个页面中正好在测试环境下有一个访问不到的资源,那十几秒的延迟正是它放大出的时间差。
分享到:
相关推荐
`jQuery(document).ready()`函数是jQuery中的一个重要概念,它确保了在执行任何JavaScript代码之前,DOM已经完全加载和解析完成。这个特性使得开发者可以在不担心元素未定义的情况下操作DOM。以下是几种常见的表示...
在学习jQuery框架时,了解$(document).ready()函数的作用至关重要。这一函数是管理页面加载顺序和时机的核心部分,它确保了页面的DOM元素完全加载并可被脚本操作之后,才执行包裹在其中的代码。 ### 知识点:jQuery...
2. **顺序问题**:确保`$(document).ready()`脚本在JQuery库加载之后执行。如果JQuery库在你的脚本之前加载,那么`$`符号将不会被定义,因此`$(document).ready()`会抛出错误。 3. **异步加载**:如果你的页面使用...
这两个阶段分别对应了jQuery中的$(document).ready()方法和JavaScript的onload事件。 $(document).ready()是jQuery提供的一个方法,它允许我们在DOM结构完全加载并且解析后立即执行代码。在描述中提到,$(document)...
[removed] = function(){ ... 相似,不同的是onload()的方法是在页面加载完成后才发生,这包括DOM元素和其他页面元素(例如图片)的加载,因此,使用document.ready()方法的执行速度比onload()的方法要快。 Javasc
$(document).ready()函数和body标签的onload事件有着相似的功能,即它们都用于在页面加载完成后执行代码。然而,$(document).ready()更加灵活和强大。首先,它允许在同一个页面上多次使用,而不会引起冲突,这与...
总结来说,`document.ready`和`window.onload`是两种处理页面加载的不同策略。理解它们的区别并根据实际需求选择合适的方法,对于编写高效、响应式的前端代码至关重要。在优化用户体验时,尽可能使用`document.ready...
$(document).Ready()方法 VS OnLoad事件 VS $(window).load()方法 接触JQuery一般最先学到的是何时启动事件。在曾经很长一段时间里,在页面载入后引发的事件都被加载在”Body”的Onload事件里. 对于Body的Onload事件...
$(document).ready()方法仅需要DOM元素全部加载完成即可执行,这也就是说,当HTML被完全加载和解析之后,不等待样式表、图片和子框架的加载完成就会运行。而window.onload事件则必须等到页面中所有内容,包括所有的...
2. **加载顺序问题**:my97 datepicker需要在DOM加载完成后才能初始化,因此它的脚本应该放在`<body>`标签的底部,或者使用`window.onload`或`$(document).ready`来确保在调用插件之前页面元素已经完全加载。...
本文主要讲述了在jQuery Mobile环境下,如何在页面加载过程中添加加载中效果,并比较了页面加载事件`document.ready`和`window.onload`的执行顺序。同时提供了一些示例代码来展示如何实现这一效果。 首先,了解...
但与window.onload不同的是,$(window).load()方法可以与$(document).ready()一起使用,从而允许开发者同时控制页面DOM元素的加载和页面所有资源的加载。 此外,还有一些特殊情况,在所有DOM元素加载之前执行的代码...
开发者应尽量使用`$(document).ready()`而不是`window.onload`来尽早执行代码,以提高页面加载速度。 **总结** jQuery 1.8 API中文离线手册是开发者不可或缺的参考资料,它详细阐述了jQuery的各种功能和用法。通过...
在JavaScript和jQuery中,`$(document).ready()`和`$(window).load()`是两种常见的事件绑定函数,它们分别用于在不同的页面加载阶段执行相应的代码。理解它们的区别和执行顺序对于优化网页性能和确保脚本正确运行至...
2. **使用jQuery的`$.load()`**:除了`$(document).ready()`,jQuery还提供了`$(window).load()`,它的行为类似于原生的`window.onload`,等待所有资源加载后再执行。 3. **使用`DOMContentLoaded`事件**:这是原生...
在使用jQuery时,我们通常使用`$(document).ready()`方法来确保在文档完全加载到浏览器后执行代码。这是一个非常有用的功能,因为它允许开发者确保在操作DOM元素之前,这些元素已经完全可用。 然而,了解如何用纯...