2011-01-30 150 views
153

我想在頁面加載時運行一個函數,但我不想在body標籤中使用它。加載頁面時的運行函數

我,如果我初始化它在體內般的這個運行的腳本:

function codeAddress() { 
code..... 
} 

<body onLoad="codeAddress()"> 

但我想沒有身體onLoad="codeAddress()"運行它,我已經tryed很多事情,比如這個:

window.onload = codeAddress; 

但它不工作?

那麼如何在頁面加載時運行它?

+0

請發表您的全部代碼。正如Darin和我所說的(忽略其他人),這應該起作用。如果它沒有工作,在其他地方一定有錯誤。 – Skilldrick 2011-01-30 11:38:45

+3

所有流行的瀏覽器都可以顯示javascript錯誤 - 你有沒有收到? – Christoph 2011-01-30 11:56:37

+0

你在`codeAddress()`定義之後運行`window.onload = codeAddress`嗎?如果是這樣,這應該工作。你確定其他地方沒有錯誤嗎? – Skilldrick 2011-01-30 11:20:01

回答

253

window.onload = codeAddress;應該工作 - here's a demo,以及全碼:

<!DOCTYPE html> 
 
<html> 
 
    <head> 
 
     <title>Test</title> 
 
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
 
     <script type="text/javascript"> 
 
     function codeAddress() { 
 
      alert('ok'); 
 
     } 
 
     window.onload = codeAddress; 
 
     </script> 
 
    </head> 
 
    <body> 
 
    
 
    </body> 
 
</html>


<!DOCTYPE html> 
 
<html> 
 
    <head> 
 
     <title>Test</title> 
 
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
 
     <script type="text/javascript"> 
 
     function codeAddress() { 
 
      alert('ok'); 
 
     } 
 
     
 
     </script> 
 
    </head> 
 
    <body onload="codeAddress();"> 
 
    
 
    </body> 
 
</html>

9
window.onload = function(){codeAddress();}; 
3

看看domReady script,它允許設置DOM加載時執行的多個函數。它基本上是DOM準備在許多流行的JavaScript庫中所做的,但是輕量級並且可以在外部腳本文件的開始處被採用和添加。

用法示例

// add reference to domReady script or place 
// contents of script before here 

function codeAddress() { 

} 

domReady(codeAddress); 
31

以Darin的答案,但jQuery的風格。 (我知道用戶要求JavaScript)。

running fiddle

$(document).ready (function(){ 
    alert('ok'); 
});​ 
86

而不是使用jQuery或在window.onload,原生的JavaScript自從jQuery的發佈採取了一些偉大的功能。所有現代瀏覽器現在都有自己的DOM就緒功能,而無需使用jQuery庫。

如果你使用原生Javascript,我會推薦這個。

document.addEventListener('DOMContentLoaded', function() { 
    alert("Ready!"); 
}, false); 
1

window.onload = function() { ...等不是一個很好的答案。

這可能會起作用,但它也會打破任何已經與該事件掛鉤的其他功能。或者,如果另一個函數在你的事件之後掛鉤了這個事件,它將會破壞你的事件。 因此,您可能需要花費很多小時的時間才能找出爲什麼某些工作已不再成熟。

更健壯的答案here:

if(window.attachEvent) { 
    window.attachEvent('onload', yourFunctionName); 
} else { 
    if(window.onload) { 
     var curronload = window.onload; 
     var newonload = function(evt) { 
      curronload(evt); 
      yourFunctionName(evt); 
     }; 
     window.onload = newonload; 
    } else { 
     window.onload = yourFunctionName; 
    } 
} 

我一直在用,我忘了,我發現它給筆者的信用某些代碼。

function my_function() { 
    // whatever code I want to run after page load 
} 
if (window.attachEvent) {window.attachEvent('onload', my_function);} 
else if (window.addEventListener) {window.addEventListener('load', my_function, false);} 
else {document.addEventListener('load', my_function, false);} 

希望這有助於:)