2013-12-17 29 views
0

這看起來很奇怪......我有一個HTML頁面,我無法修改"body"行(因爲它是從另一個文件中包含的php)。在該文件中,封閉"/body"標記之前,我有一個JavaScript函數:有時會調用JavaScript函數,有時候不是

<script language="JavaScript"> 
function doSomething() { 
    /* some code */ 
} 
</script> 

因爲我想在顯示頁面時要執行這個功能,因爲我不能修改的「身體」行,我加了一個地方小的圖像,並在加載時調用此函數:

<img src="transp.gif" border="0" width="0" height="0" onload="doSomething();" /> 

問題是功能有時也被稱爲有時不叫。我甚至用適當的"alert"聲明驗證了這一點......我做錯了什麼?爲什麼"onload"不一致執行?

+1

爲什麼不使用正確的onload? 'window.onload = function(){doSomething()};'。 – DontVoteMeDown

+0

如果圖像在緩存中,我不認爲onload被調用。你最好使用張貼的建議之一。 – Fred

回答

2

問題是,您試圖在函數進入DOM之前調用該函數。呼叫「DoSomething的」加載功能後...

<script language="JavaScript"> 
function doSomething() { 
    /* some code */ 
} 
doSomething(); 
</script> 

但乾淨的解決方案是使用:

<script> 
window.onload=function(){ 
    /* some code */ 
}; 
</script> 
+0

包含'windows.onload'的上述腳本可以駐留在HTML的主體部分嗎? –

+0

肯定@FreeBud,但它的window.onload(沒有's');-) – Mackan

+0

謝謝!它現在似乎工作。 –

2

您可以使用事件window.load當頁面(和你的IMG)被加載

<script> 
window.onload = function(){ 
    //code 
}; 
</script> 

和您的IMG沒有事件

<img src="transp.gif" border="0" width="0" height="0" /> 
+0

事件監聽器會更好,因爲即使有另一個onload函數,它也可以工作。 – Zaffy

1

您是否嘗試過以下是被炒魷魚嗎?

<html> 
<body> 
<script type="text/javascript"> 
window.onload = function() { 
//your code here 
} 
</script> 
</body> 
</html> 
相關問題