2011-09-04 66 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);