我有一些javascript(如果你感兴趣的话可以初始化谷歌地图的代码),我被迫包含在html文档的<body></body>
标签中,我想让我的一个方法触发页面加载完成。问题是我无权访问<body>
html标记,所以我不能这样做:
<body onload="foo()">
有没有办法实现这个目标?我意识到这是一个荒谬的场景。谢谢!
答案 0 :(得分:4)
根据代码的运行时间,使用JavaScript附加处理程序:
if(window.onload) {
var _existing = window.onload;
window.onload = function() {
_existing();
foo();
};
}
else {
window.onload = foo;
}
由于您似乎无法控制页面,我们必须更加小心。其他JavaScript可能已经设置了事件处理程序。要成为一个好公民,我们不仅要覆盖事件处理程序,还要保留对它的引用。
但是其他JavaScript代码可能会再次覆盖它。
最好的方法是使用更高级的事件处理方法addEventListener
(W3C)和attachEvent
(IE)。
有关事件处理的更多信息,建议您阅读excellent articles on quirksmode.org。
答案 1 :(得分:2)
您可以使用DOM以编程方式附加事件。
// Function to add event listener to body
function addLoadFn()
{
var body = document.getElementById("body");
body.addEventListener("load", myOnloadListener, false);
}
答案 2 :(得分:2)
window.onload = foo;
function foo(){
alert("page loaded!");
}
答案 3 :(得分:2)
如果您使用的是jQuery,可以使用$(document).ready
:
$(document).ready(function() {
// put all your jQuery goodness in here.
});
请参阅此tutorial。