JavaScript的窗口之间有什么区别。onload和jQuery的$(document).ready()方法?


当前回答

该文档。ready事件发生时,HTML文档已加载,窗口。Onload事件总是稍后发生,当所有内容(图像等)都已加载。

你可以使用文档。Ready事件,如果你想在渲染过程中“早期”介入,而不等待图像加载。 如果你需要图像(或任何其他“内容”)在你的脚本“做一些事情”之前准备好,你需要等到window.onload。

例如,如果您正在实现“幻灯片显示”模式,并且需要根据图像大小执行计算,则可能希望等到window.onload。否则,您可能会遇到一些随机问题,这取决于图像加载的速度。您的脚本将与加载图像的线程同时运行。如果脚本足够长,或者服务器足够快,如果图像恰好及时到达,您可能不会注意到问题。但是最安全的做法是允许图像被加载。

文档。Ready可以是一个很好的事件,让你向用户显示一些“loading…”标志,并在窗口上显示。onload,你可以完成任何需要加载资源的脚本,然后最后删除“Loading…”标志。

例子:-

// document ready events
$(document).ready(function(){
     alert("document is ready..");
})

// using JQuery
$(function(){
   alert("document is ready..");
})

// window on load event
function myFunction(){
  alert("window is loaded..");
}
window.onload = myFunction;

其他回答

事件

美元(文档)。on('ready', handler)绑定到来自jQuery的ready事件。加载DOM时调用处理程序。像图像这样的资产可能仍然缺失。如果文档在绑定时已经准备好,那么它将永远不会被调用。jQuery为此使用DOMContentLoaded-Event,如果不可用则模拟它。

美元(文档)。On ('load', handler)是一个事件,当所有资源从服务器加载时将被触发。图像现在已经加载。onload是一个原始HTML事件,而ready是由jQuery构建的。

功能

$(document).ready(handler)实际上是一个承诺。如果在调用时文档已经准备好,则处理程序将立即被调用。否则它会绑定到ready-Event。

在jQuery 1.8之前,$(document).load(handler)作为$(document).on('load',handler)的别名存在。

进一步的阅读

时机 在函数就绪时 一个例子 承诺 删除的事件别名

窗口。onload是JavaScript内置函数。窗口。当HTML页面加载时,onload触发器。窗口。Onload只能写入一次。

文档。ready是jQuery库的一个函数。文档。ready在HTML文件中包含的HTML和所有JavaScript代码、CSS和图像完全加载时触发。 文档。Ready可以根据需要写多次。

有一件事要记住(或者我应该说要记住),你不能像准备好了一样叠在一起。换句话说,jQuery神奇地允许在同一个页面上有多个readys,但是onload不能做到这一点。

最后一个onload将否决之前的任何onload。

处理这个问题的一个好方法是使用一个显然由Simon Willison编写的函数,并在使用多个JavaScript Onload函数中进行了描述。

function addLoadEvent(func) {
    var oldonload = window.onload;
    if (typeof window.onload != 'function') {
        window.onload = func;
    }
    else {
        window.onload = function() {
            if (oldonload) {
                oldonload();
            }
            func();
        }
    }
}

// Example use:
addLoadEvent(nameOfSomeFunctionToRunOnPageLoad);
addLoadEvent(function() {
  /* More code to run on page load */
});

该文档。ready事件发生时,HTML文档已加载,窗口。Onload事件总是稍后发生,当所有内容(图像等)都已加载。

你可以使用文档。Ready事件,如果你想在渲染过程中“早期”介入,而不等待图像加载。 如果你需要图像(或任何其他“内容”)在你的脚本“做一些事情”之前准备好,你需要等到window.onload。

例如,如果您正在实现“幻灯片显示”模式,并且需要根据图像大小执行计算,则可能希望等到window.onload。否则,您可能会遇到一些随机问题,这取决于图像加载的速度。您的脚本将与加载图像的线程同时运行。如果脚本足够长,或者服务器足够快,如果图像恰好及时到达,您可能不会注意到问题。但是最安全的做法是允许图像被加载。

文档。Ready可以是一个很好的事件,让你向用户显示一些“loading…”标志,并在窗口上显示。onload,你可以完成任何需要加载资源的脚本,然后最后删除“Loading…”标志。

例子:-

// document ready events
$(document).ready(function(){
     alert("document is ready..");
})

// using JQuery
$(function(){
   alert("document is ready..");
})

// window on load event
function myFunction(){
  alert("window is loaded..");
}
window.onload = myFunction;

当页面上的所有内容(包括DOM(文档对象模型)内容和异步JavaScript、框架和图像)完全加载时,Windows加载事件将触发。你也可以使用body onload=。两者都是一样的;窗口。Onload = function(){} and <body Onload ="func();>是使用同一事件的不同方式。

jQuery文档。就绪函数事件执行的时间比窗口稍早。onload,在页面上加载DOM(文档对象模型)时调用。它不会等待图像、帧完全加载。

摘自以下文章: $document.ready()与window.onload()的区别