热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

怎样提取jQuery.ready(),DOM加载完毕执行onDOMReady()方法

在大部分中,需要在树载入时马上执行一些函数,但又不愿意仅为了这一个需求而引入整个库,于是就把jQuery的方法提取出来,单独使用了。当然大

在大部分中,需要在树载入时马上执行一些函数,但又不愿意仅为了这一个需求而引入整个库,于是就把jQuery的方法提取出来,单独使用了。

当然大家可以使用windows.onload事件, 但onload在看来,就是页面上的东西(img,iframe等资源)全部都加载完毕后才能发生,

如果页面内有大的图片的话,会在页面展现后好久时间后才执行。

如果只需要对DOM进行操作,那么这时就没必要等到页面全部加载了。我们需要更快的方法。

Firefox有DOMContentLoaded事件可以轻松解决,可惜的就是IE没有。

MSDN关于JSCRIPT的一个方法有段不起眼的话,当页面DOM未加载完成时,调用doScroll方法时,会产生异常。

那么我们反过来用,如果不异常,那么就是页面DOM加载完毕了!

所以 对于Mozilla & Opera 浏览器,在dom树载入后有现成的 DOMContentLoaded 事件

对于Safari 浏览器,有document.onreadystatechange事件,

当该触发时,如果 document.readyState=complete时,可视为dom树已经载入

对于ie,当在iframe内时,同样有document.onreadystatechange事件,

对于ie在非iframe内时,只有不断地通过能否执行doScroll判断dom是否加载完毕。

在本例中每间隔5毫秒尝试去执行 document.documentElement.doScroll('left')

另外要注意一点:PDF目录在ie8下,貌视非iframe窗口也会有document.onreadystatechange事件,另外你也可以在构建自己的框架时使用此函数

 

01(function(){
02var isReady=false; //判断onDOMReady方法是否已经被执行过
03var readyList= [];//把需要执行的方法先暂存在这个数组里
04var timer;//定时器句柄
05ready=function(fn) {
06if (isReady )
07fn.call( document);
08else
09readyList.push( function() { return fn.call(this);});
10return this;
11}
12var onDOMReady=function(){
13for(var i=0;i
14readyList[i].apply(document);
15}
16readyList = null;
17}
18var bindReady = function(evt){
19if(isReady) return;
20isReady=true;
21onDOMReady.call(window);
22if(document.removeEventListener){
23document.removeEventListener("DOMContentLoaded", bindReady, false);
24}else if(document.attachEvent){
25document.detachEvent("onreadystatechange", bindReady);
26if(window == window.top){
27clearInterval(timer);
28timer = null;
29}
30}
31};
32if(document.addEventListener){
33document.addEventListener("DOMContentLoaded", bindReady, false);
34}else if(document.attachEvent){
35document.attachEvent("onreadystatechange", function(){
36if((/loaded|complete/).test(document.readyState))
37bindReady();
38});
39if(window == window.top){
40timer = setInterval(function(){
41try{
42isReady||document.documentElement.doScroll('left');//在IE下用能否执行doScroll判断 dom是否加载完毕
43}catch(e){
44return;
45}
46bindReady();
47},5);
48}
49}
50})();
使用方法如下:

1ready(dosomething);//dosomething为已存在的函数
2//也可以通过闭包来使用
3ready(function(){
4//这里是逻辑代码
5});


转:https://www.cnblogs.com/aspxnets/archive/2011/06/19/2084521.html



推荐阅读
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • Html5-Canvas实现简易的抽奖转盘效果
    本文介绍了如何使用Html5和Canvas标签来实现简易的抽奖转盘效果,同时使用了jQueryRotate.js旋转插件。文章中给出了主要的html和css代码,并展示了实现的基本效果。 ... [详细]
  • 本文介绍了机器学习手册中关于日期和时区操作的重要性以及其在实际应用中的作用。文章以一个故事为背景,描述了学童们面对老先生的教导时的反应,以及上官如在这个过程中的表现。同时,文章也提到了顾慎为对上官如的恨意以及他们之间的矛盾源于早年的结局。最后,文章强调了日期和时区操作在机器学习中的重要性,并指出了其在实际应用中的作用和意义。 ... [详细]
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • 本文介绍了在满足特定条件时如何在输入字段中使用默认值的方法和相应的代码。当输入字段填充100或更多的金额时,使用50作为默认值;当输入字段填充有-20或更多(负数)时,使用-10作为默认值。文章还提供了相关的JavaScript和Jquery代码,用于动态地根据条件使用默认值。 ... [详细]
  • 本文整理了常用的CSS属性及用法,包括背景属性、边框属性、尺寸属性、可伸缩框属性、字体属性和文本属性等,方便开发者查阅和使用。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文介绍了[从头学数学]中第101节关于比例的相关问题的研究和修炼过程。主要内容包括[机器小伟]和[工程师阿伟]一起研究比例的相关问题,并给出了一个求比例的函数scale的实现。 ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • Ihavethefollowingonhtml我在html上有以下内容<html><head><scriptsrc..3003_Tes ... [详细]
  • Ihaveaworkfolderdirectory.我有一个工作文件夹目录。holderDir.glob(*)>holder[ProjectOne, ... [详细]
  • 场景1.IE,Firefox浏览器访问不了网站,谷歌浏览器可以,返回错误码DNS_PROBE_POSSIBLE.2.pingwww.qq.com可以ping通,ping局域 ... [详细]
  • CSS|网格-行-结束属性原文:https://www.gee ... [详细]
  • 使用python输入PDF编号自动下载freepatentsonline.com的文档#!usrbinenvpython3#codingutf-8#Version:python3. ... [详细]
author-avatar
zoey小
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有