2011-09-04 63 views
1

我有几个需要在页面加载以获取内容时运行的JavaScript函数。我试图使用window.onload来调用该函数,但它没有奏效。当页面加载时运行javascript函数

基本上,页面加载完成后需要运行几个函数,但只能运行一次。

我有这到目前为止,但它没有工作

<script language="javascript"> 
window.onload=serverstats 
window.onload=latestnews 
</script> 
+0

这就是为什么存在[先进的事件处理程序模型(http://www.quirksmode.org/js/events_advanced.html)。 –

回答

4

这是你的主要问题:

window.onload=serverstats #sets window.onload to serverstats 
window.onload=latestnews #sets window.onload to latestnews and removes the reference to serverstats 

您可以通过执行解决这个问题:

oldOnload = window.onload; 
window.onload=function() { 
    oldOnload(); 
    serverstats(); 
    latestnews(); 
}; 

然而,因为问题是用JQuery标记的,所以我会推荐使用它并执行:

$(document).ready(function() { 
    serverstats(); 
    latestnews(); 
}); 
+0

直接使用'onload'在某些环境下可能会非常糟糕,这些环境可能会首先设置onload或假定为独占所有者... – 2011-09-04 22:01:45

+0

我已编辑我的代码以反映此情况。 – Gazler

+0

谢谢。完美地工作。 – Mythrillic

0

您正在覆盖onload值。编写一个调用它们的函数。

window.onload = function() { 
    serverstats(); 
    latestnews(); 
}; 
+0

这是打破与许多其他库(和/或SharePoint ...)集成的一种方法。然而,它不值得-1所以.. – 2011-09-04 21:59:57

+0

@pst:是的,其他解决方案更好。如果你想加入,请发送一个给德鲁:他发布了非jQuery解决方案,这总是很好的知道。 –

0

如果您已经使用jQuery我将提供另一种选择:

$(function() { 
    serverstats(); 
    latestnews(); 
}); 

这仅仅是例子,简单的事情怎么可以用合适的工具。

1

您也可以通过下面的代码同时处理:

window.addEventListener("load", serverstats); 
window.addEventListener("load", latestnews); 

这并不在IE8和更早,虽然,这使用方法:

window.attachEvent("onload", serverstats); 
window.attachEvent("onload", latestnews);