码迷,mamicode.com
首页 > 编程语言 > 详细

[javascript]如何 VS jQuyer ready

时间:2014-08-25 13:11:54      阅读:286      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   java   os   使用   io   strong   

我们常做的,页面加载完毕 我们要做一些事情常用到的有以下几种方式。

 1. jQuery.ready

 jQuery 基本每一个搞前端的童鞋都会使用了 , 这个确实给我们带来极多的便利。  jQuery ready 触发是在DOM加载完毕即触发。比window.onload优先。

附图:jQuery版本大小 (好多童鞋都认为jQuery加载到页面上有点偏大)

bubuko.com,布布扣

 

 2. window.onload

之前我最经常使用的方法。 这个特点就是需要等待页面元素加载完毕才能触发。正常情况下,和jQuery没太多的时差。但是 如果页面上有大量的图片或者有iframe的话,window.onload 将成为你的灾难。。

 

 3. 执行方法放到页面最下方的script里面

 如果遇到《2》中描述 的形式。 这确实是一种好的解决方法,且该方法的优先于jQuery.ready 。

 

 4. 分离出来的jQuery.ready

这个是我之前从一位童鞋那抄来的。忘记是哪位童鞋了,如果这位童鞋看见请留言,我补上您的大名哈。

 

 (function () {
            var isReady = false; //判断onDOMReady方法是否已经被执行过
            var readyList = [];//把需要执行的方法先暂存在这个数组里
            var timer;//定时器句柄
            ready = function (fn) {
                if (isReady)
                    fn.call(document);
                else
                    readyList.push(function () { return fn.call(this); });
                return this;
            }
            var onDOMReady = function () {
                for (var i = 0; i < readyList.length; i++) {
                    readyList[i].apply(document);
                }
                readyList = null;
            }
            var bindReady = function (evt) {
                if (isReady) return;
                isReady = true;
                onDOMReady.call(window);
                if (document.removeEventListener) {
                    document.removeEventListener("DOMContentLoaded", bindReady, false);
                } else if (document.attachEvent) {
                    document.detachEvent("onreadystatechange", bindReady);
                    if (window == window.top) {
                        clearInterval(timer);
                        timer = null;
                    }
                }
            };
            if (document.addEventListener) {
                document.addEventListener("DOMContentLoaded", bindReady, false);
            } else if (document.attachEvent) {
                document.attachEvent("onreadystatechange", function () {
                    if ((/loaded|complete/).test(document.readyState))
                        bindReady();
                });
                if (window == window.top) {
                    timer = setInterval(function () {
                        try {
                            isReady || document.documentElement.doScroll(‘left‘);//在IE下用能否执行doScroll判断dom是否加载完毕
                        } catch (e) {
                            return;
                        }
                        bindReady();
                    }, 5);
                }
            }
        })();

 

 5. 演示代码

:“小子废话一堆,不知所云,你是标题党吧” 。

客官继续看↓

示例代码

查看代码输出不难看出:《3》方法明显更优先。

--- 执行到最下方及加载完毕,尝试输出:d1 vs_jqrvs.jquery.ready.html:76
--- JQ load 页面加载完毕 vs_jqrvs.jquery.ready.html:76
--- JQ 剥离版本 页面加载完毕 vs_jqrvs.jquery.ready.html:76
--- img load 加载完毕 vs_jqrvs.jquery.ready.html:76
--- iframe load 加载完毕 vs_jqrvs.jquery.ready.html:76
--- window load 页面加载完毕

 

 

大家有啥更好的方式一起聊聊!!!

 

[javascript]如何 VS jQuyer ready

标签:style   blog   http   color   java   os   使用   io   strong   

原文地址:http://www.cnblogs.com/shtml/p/3934636.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!