[javascript]如何 VS jQuyer ready

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

 1. jQuery.ready

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

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

[javascript]如何 VS jQuyer ready

 

 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)