如何在页面加载完成时从HTML文档的主体调用javascript函数

时间:2011-05-06 16:55:23

标签: javascript javascript-events

我有一些javascript(如果你感兴趣的话可以初始化谷歌地图的代码),我被迫包含在html文档的<body></body>标签中,我想让我的一个方法触发页面加载完成。问题是我无权访问<body> html标记,所以我不能这样做:

<body onload="foo()"> 

有没有办法实现这个目标?我意识到这是一个荒谬的场景。谢谢!

4 个答案:

答案 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