诊断body.onload没有被调用

时间:2012-11-08 17:29:24

标签: javascript html dom

我有一些网页依赖body.onload(或等效地,window.onload)来正确设置它们。有时onload没有被调用。

是否有一些网页浏览器(理想情况下是Chrome,这显然最常发生)的技巧会告诉我究竟是什么阻止网页成功加载

线索:当我按F5重新加载整个页面时,很少(甚至可能永远不会)发生这种情况,但更常见的情况是,如果通过单击链接或将URL粘贴到地址栏中来到达页面,则会发生这种情况。是否有onload语义的怪癖可能会使我绊倒?

N.B。脚本本身不会在控制台中产生任何错误。

2 个答案:

答案 0 :(得分:3)

我想你想要window.onload

答案 1 :(得分:1)

我已经对这些案例进行了测试,以下任何一种都不会起作用:

var callback = function() { alert("Body loaded"); };
$("body").load(callback);
document.body.addEventListener("load",callback,false);

然而,document.body.onload似乎工作正常。确保body正确命名空间:

document.body //<body>
body //Reference error

如果你在谈论:

<body onload="callback();"></body>

然后返回并查看您的代码,因为它应该有用。


就个人而言,我建议使用窗口对象的load事件或框架的ready事件。

//Execute when the window is loaded
var callback = function() {
     //Your code goes here...
};
if (window.addEventListener) window.addEventListener("load",callback,false);
else window.attachEvent("load",callback);

使用jQuery,您只需要以下内容:

$(window).load(callback);

jQuery的ready事件如下:

$(document).ready(callback);
//Or just:
$(callback);

MooTools使用它:

window.addEvent("domready",callback);

不同的图书馆都有自己的方式。