[javascript]如何 VS jQuyer ready

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

1. jQuery.ready

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

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

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 页面加载完毕

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

时间: 2024-07-31 09:35:26

[javascript]如何 VS jQuyer ready的相关文章

【javascript】onload load ready的那些事

首先明确一下页面加载的步骤: 1.下载解析HTML文档结构 2.加载外部脚本文件与样式表文件 3.解析并执行脚本代码 4.构造HTML DOM模型 5 .加载图片等外部文件 6.页面加载完毕 接下来,我们分别介绍一下三者: load()方法: load()方法总共有两种,分别是 jquery的load()方法和jquery Ajax的load()方法. 如何区别两个方法在于参数的不同. jQuery: 当指定的元素(及子元素)已加载时,会发生 load() 事件. 该事件适用于任何带有 URL

jquery中ready函数,$(function(){})与自执行函数的区别

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <script type="text/javascript" src="js/jquery-1.12.1.js"></script> <script type=&q

JavaScript 拼接JSON

<script language="javascript" type="text/javascript"> var json=""; $(document).ready(function () { $("#Button1").bind("click", function () { $.ajax({ type: "post", url: "GiftBox_RePrin

JavaScript --经典问题

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Georgia; color: #333333 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Verdana; color: #333333 } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Courier New"; color: #2b2b2b } p.

javascript 最权威的知识点总结

JavaScript中如何检测一个变量是一个String类型?请写出函数实现typeof(obj) === "string"typeof obj === "string"obj.constructor === String请用js去除字符串空格?方法一:使用replace正则匹配的方法 去除所有空格: str = str.replace(/\s*/g,""); 去除两头空格: str = str.replace(/^\s*|\s*$/g,&quo

DataTables学习:从最基本的入门静态页面,使用ajax调用Json本地数据源实现前端开发深入学习,根据后台数据接口替换掉本地的json本地数据,以及报错的处理地方,8个例子(显示行附加信息,回调使用api,动态显示和隐藏列...),详细教程

一.DataTables  个人觉得学习一门新的插件或者技术时候,官方文档是最根本的,入门最快的地方,但是有时候看完官方文档,一步步的动手写例子,总会出现各种莫名其妙的错误,需要我们很好的进行研究出错的地方. 官方网站(中文):http://datatables.club/ 官方网站:https://www.datatables.net/  二.简单的例子 怎样简单地使用DataTables?使用下方简单的几行代码,一个方法初始化table. $(document).ready(function

jquery页面加载完成后,在页面居中方式显示xxxx

<head> <meta charset="utf-8"/> <title>第一个简单的jQuery程序</title> <style type="text/css"> div{ padding:8px 0px; font-size:12px; text-align:center; border:solid 1px #888; } </style> <script src="ht

返回值是TEXT的阿贾克斯方法

1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="

PHP----练习----光标离开文本框时变色

题目::创建若干个输入文本框,当光标离开文本框的时候如果文本框为空,则将文本框背景色设置为红色,如果不为空则为白色. 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/