如何在页面完全加载时执行一个函数?
当页面完全加载时,我需要执行一些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; };