如何在页面完全加载时执行一个函数?

当页面完全加载时,我需要执行一些JavaScript代码。 这包括像图像的东西。

我知道你可以检查DOM是否准备好,但我不知道这是否与页面完全加载时相同。

这就是所谓的onload。 在DOM准备好了之前,它已经到了waaaaay了,DOM准备工作实际上是为了onload等待图像而创build的。

window.onload = function () { alert("It's loaded!") } 

通常你可以使用window.onload ,但是你可能注意到当你使用后退/前进历史button时,最近的浏览器不会触发window.onload

有些人build议奇怪的扭曲来解决这个问题,但如果你只是做一个window.onunload处理程序(即使没有做任何事情),真正的caching行为将被禁用在所有的浏览器。 MDClogging这个“function”相当好,但由于某种原因,仍然有人使用setInterval和其他奇怪的黑客。

一些版本的Opera有一个错误,可以通过在页面中添加以下某个地方来解决:

 <script>history.navigationMode = 'compatible';</script> 

如果你只是想获得一个每个视图调用一次的javascript函数(并不一定在DOM完成加载后),你可以做这样的事情:

 <img src="javascript:location.href='javascript:yourFunction();';"> 

例如,我使用这个技巧将一个非常大的文件预加载到加载屏幕上的caching中:

 <img src="bigfile" onload="this.location.href='javascript:location.href=\'javascript:doredir();\';';doredir();"> 

当一切都被加载,window.onload事件将触发,包括图像等。

如果你想让你的js代码尽早执行,你需要检查DOM就绪状态,但是你仍然需要访问DOM元素。

使用onLoad()事件的Javascript将等待页面在执行前被加载。

 <body onload="somecode();" > 

如果您使用的是jQuery框架的文档准备function,那么代码将在DOM加载后以及加载页面内容之前立即加载:

 $(document).ready(function() { // jQuery code goes here }); 

试试这个只在整个页面加载后才运行

通过Javascript

 window.onload = function(){ // code goes here }; 

由Jquery

 $(window).bind("load", function() { // code goes here }); 

您可能想要使用window.onload ,因为文档指出在DOM准备好以及页面中的所有其他资源(图像等)都被加载之前,它不会被解雇。

为了完整起见,您可能还想将其绑定到现在广泛支持的DOMContentLoaded

 document.addEventListener("DOMContentLoaded", function(event){ // your code here }); 

更多信息: https : //developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded

试试这个代码

 document.onreadystatechange = function () { if (document.readyState == "interactive") { initApplication(); } } 

请访问https://developer.mozilla.org/en-US/docs/DOM/document.readyState了解更多详情;

这里有一个与PrototypeJS做的方法:

 Event.observe(window, 'load', function(event) { // Do stuff }); 

如果您需要使用许多onload使用$(window).load (jQuery):

 $(window).load(function() { //code }); 

GlobalEventHandlers mixin的onload属性是Window,XMLHttpRequest,元素等的加载事件的事件处理程序,加载资源时触发该事件。

所以基本上JavaScript已经在窗口上的onload方法得到执行哪个页面完全加载包括图像…

你可以做一些事情:

 var spinner = true; window.onload = function() { //whatever you like to do now, for example hide the spinner in this case spinner = false; };