`
eclipse07
  • 浏览: 21687 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

JQuery1.4.2的ondomready分析

阅读更多
window.onload 应该都知道了,不过此事件要在DOM完全加载完毕,包括图片都加载完毕才触发,如果我们有事情需要注册到onload上,有时恐怕得等到黄瓜菜都凉了。于是这时 DOMContentLoaded 翩翩而来,此事件在 DOM 加载完毕(不包括图片都加载完毕)后触发,正合要求,但很不幸的是此事件IE不支持。下面来看看JQuery的如何解决这个问题,废话不说,直接看代码
	ready: function( fn ) {
		// 绑定监听
		jQuery.bindReady();

		// 如果 DOM 加载完毕
		if ( jQuery.isReady ) {
			// 立即执行方法
			fn.call( document, jQuery );

		// 否则,将需要执行的方法保存起来
		} else if ( readyList) {
			// 保存方法到 list 中
			readyList.push( fn );
		}
		return this;
	}

那么看看这个 bindReady 方法
	bindReady: function() {
                // 设置是否已经绑定的标识符
		if ( readyBound ) {
			return;
		}

		readyBound = true;

		// 如果文档加载完毕,执行注册保存的方法
		if ( document.readyState === "complete" ) {
			return jQuery.ready();
		}

		// Mozilla, Opera 和 webkit nightly 之流的浏览器支持 DOMContentLoaded 事件
		if ( document.addEventListener ) {
			document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );
			
			// 如果注册 DOMContentLoaded 事件句柄失败,注册到 window 的 onload 上作为后手
			window.addEventListener( "load", jQuery.ready, false );

		// 如果是传说中万恶的 IE
		} else if ( document.attachEvent ) {
			// 如果是 iframe, 绑定到 onreadystatechange, 会在 window.onload 前触发
			document.attachEvent("onreadystatechange", DOMContentLoaded);
			
			// 同样注册到 onload 上作为后手
			window.attachEvent( "onload", jQuery.ready );

			// 如果不是一个 iframe,检查 DOM 是否加载完毕
			var toplevel = false;

			try {
				toplevel = window.frameElement == null;
			} catch(e) {}

			if ( document.documentElement.doScroll && toplevel ) {
                          // 在此方法中检查 DOM 是否加载完毕
				doScrollCheck();
			}
		}
	}

最后看看 doScrollCheck 方法是何方神圣。
// 检查 DOM 是否加载完成,与 DOMContentLoaded 事件类似
function doScrollCheck() {
        // 再次判断一下
	if ( jQuery.isReady ) {
		return;
	}

	try {
		// 如果是IE,使用 Diego Perini 的一个 hack 技术,原理是执行 doScroll方法,如果可执行说明 DOM 加载完毕
		// http://javascript.nwbox.com/IEContentLoaded/
		document.documentElement.doScroll("left");
	} catch( error ) {
                // 如果未加载完毕,轮询之
		setTimeout( doScrollCheck, 1 );
		return;
	}

	// 执行注册保存的方法
	jQuery.ready();
}
分享到:
评论

相关推荐

    jquery1.4.2 jquery1.4.2

    《jQuery 1.4.2:深入解析与应用》 jQuery 1.4.2 是一个里程碑式的版本,它在JavaScript库的世界中占有重要地位,为开发者提供了强大的DOM操作、事件处理、动画效果以及Ajax交互等功能。这个版本的发布极大地简化了...

    jquery1.4.2库 jquery1.4.2中文参考手册

    《jQuery 1.4.2 库:中文参考手册详解》 jQuery,作为一款轻量级的JavaScript库,因其简洁的API和强大的功能而深受开发者喜爱。本文将深入探讨jQuery 1.4.2版本,这是一个在2010年发布的经典版本,尽管后续有更多...

    jQuery1.4.2_API帮助文档(中文版)

    Jquery是继prototype之后又一个优秀的Javascript框架。它是轻量级的js库 ,它兼容CSS3,还兼容各种浏览器(IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+),jQuery2.0及后续版本将不再支持IE6/7/8浏览器。jQuery使...

    jQuery1.4.2帮助文档

    **jQuery 1.4.2 帮助文档** jQuery 是一个广泛使用的JavaScript库,它极大地简化了HTML文档遍历、事件处理、动画以及Ajax交互。版本1.4.2是该库的一个重要里程碑,引入了许多增强和修复,旨在提高性能和稳定性。...

    JQuery 1.4.2_API简体中文版

    **jQuery 1.4.2 API简体中文版** jQuery是一个强大的JavaScript库,它极大地简化了HTML文档遍历、事件处理、动画制作以及Ajax交互。jQuery 1.4.2是该库的一个重要版本,提供了许多增强功能和修复了1.4版本中发现的...

    jquery1.4.2相关的文件

    附件里里面有 jquery-1.4.2.js jquery-1.4.2.min.js jquery-1.4.2-vsdoc.js JQuery_1.4.2_API.chm 在VS2008里引用jquery-1.4.2.js和jquery-1.4.2-vsdoc.js,可以支持jquery方法的智能提示。

    jQuery 1.4.2 版本.zip

    这个“jQuery 1.4.2 版本.zip”压缩包包含了jQuery库的两个核心文件:`jquery-1.4.2.js`和`jquery-1.4.2.min.js`。 **jQuery 1.4.2**: 在2010年,jQuery发布了1.4.2版本,这是一个里程碑式的更新,它带来了许多...

    jquery 1.4.2 中文手册(API)

    **jQuery 1.4.2 中文手册**是开发者学习和使用jQuery库的重要参考资料,它提供了详尽的API文档和示例,帮助开发者理解和运用jQuery的各种功能。jQuery是一款高效的JavaScript库,它简化了HTML文档遍历、事件处理、...

    JQuery 1.4.2 API chm 例子很充实

    《JQuery 1.4.2 API chm:实例丰富的技术宝典》 JQuery,作为一款广泛应用于前端开发的JavaScript库,极大地简化了DOM操作、事件处理、动画设计和Ajax交互。JQuery 1.4.2 API是开发者的重要参考资料,其中包含了...

    jquery1.4.2

    《jQuery 1.4.2:核心特性与实践解析》 jQuery,作为一款广泛使用的JavaScript库,极大地简化了网页的DOM操作、事件处理、动画设计和Ajax交互。本篇文章将聚焦于jQuery 1.4.2版本,深入探讨其关键特性和实际应用,...

    jquery1.4.2(包含4个js)

    《jQuery 1.4.2:深入理解与应用》 jQuery是JavaScript库的杰出代表,以其简洁的API和强大的功能赢得了开发者们的广泛喜爱。这里我们关注的是jQuery 1.4.2版本,它包含了四个核心文件,分别是: 1. **jquery1.4.2....

    jquery-1.4.2.js和jquery.min-1.4.2.js

    《jQuery 1.4.2:深入理解与应用》 jQuery是JavaScript库的杰出代表,以其简洁、易用的API闻名于世。本篇将详细探讨jQuery 1.4.2这一经典版本,以及其对应的压缩文件jquery.min-1.4.2.js。 一、jQuery的核心理念 ...

    jQuery1.4.2类库

    jQuery1.4.2是jQuery库的一个早期版本,发布于2010年,它为开发者提供了丰富的功能,简化了JavaScript编程,特别是处理DOM操作、事件处理、动画效果以及Ajax交互。以下是对jQuery1.4.2类库的详细解析: 1. **选择器...

    jquery1.4.2和中文API

    jquery1.4.2和中文APIjquery1.4.2和中文APIjquery1.4.2和中文APIjquery1.4.2和中文APIjquery1.4.2和中文APIjquery1.4.2和中文API

    JQuery1.4.2(jquery-1.4.2.js jquery-1.4.2.min.js jquery-1.4.2-vsdoc.js jquery-1.4.2-vsdoc_en.js jquery.cookie.js)

    jquery-1.4.2.js jquery-1.4.2.min.js jquery-1.4.2-vsdoc.js 中文版vsdoc jquery-1.4.2-vsdoc_en.js jquery.cookie.js

    jquery1.4.2.

    jquery1.4.2.min.js jquery

    jQuery1.4.2开发包

    在本文中,我们将深入探讨jQuery1.4.2版本,这是jQuery历史上的一个重要里程碑,它引入了许多增强功能和性能优化。 一、jQuery核心概念 1. 选择器:jQuery的核心在于它的选择器,它允许开发者用CSS样式的语法来选取...

    jquery-1.4.2.js和jquery-1.4.2-vsdoc.js

    《jQuery 1.4.2:深入理解与应用》 jQuery是JavaScript库中的翘楚,以其简洁的API和强大的功能赢得了开发者们的广泛喜爱。这里我们主要关注的是jQuery 1.4.2版本,包括核心库文件`jquery-1.4.2.js`以及辅助开发的`...

    jquery-1.4.2.js,jquery-1.4.2-vsdoc.js Jquery-1.4.2及vs智能提示插件

    **jQuery 1.4.2** 是一个历史悠久但仍然具有影响力的JavaScript库,它极大地简化了JavaScript的DOM操作、事件处理、动画制作以及Ajax交互。这个版本发布于2010年,是jQuery的一个中期版本,提供了许多改进和新功能。...

Global site tag (gtag.js) - Google Analytics