2011-10-11 82 views
0

上我使用該標籤的代碼位置,提醒我,當一個標籤已經顯示出來JavaScript代碼來觸發 -

<html> 
    <head> 
    </head> 
    <body> 
    <script type="text/javascript"> 
     document.getElementsByTagName('iframe')[0].onload = function() { 
     alert('loaded'); 
     } 
    </script> 
    <iframe></iframe> 
    </body> 
</html> 

奇怪,因爲這個代碼的工作:

<html> 
    <head> 
    </head> 
    <body> 
    <iframe></iframe> 
    <script type="text/javascript"> 
     document.getElementsByTagName('iframe')[0].onload = function() { 
     alert('loaded'); 
     } 
    </script> 
    </body> 
</html> 

爲什麼JS的需要在標籤下工作? 這裏有什麼問題?

回答

0

因爲腳本標記中的代碼是立即執行的。在第一個例子中,當時iframe不存在。但是你可以做的是將你的代碼封裝到一個onload(用於主頁面)事件中。例如:

window.onload = function() { 
    //your code 
} 

然後代碼放在哪裏並不重要。

+0

我需要在頁面中出現標籤時立即發出警報。我怎樣才能做到這一點? –

0

當您嘗試訪問它時,iframe標記不存在。
您可以檢查,通過簡單地提醒數組長度,就像

alert(document.getElementsByTagName('iframe')); 

你有沒有想過在頁面加載後執行您的JavaScript?您可能會使用一些框架,如jQuery來促進交叉瀏覽器問題。或者只是把所有的JavaScript代碼放在body的最底部。

+0

我不想使用jquery,因爲這段代碼實際上是API,所以我不能相信這一點。 –

+0

然後你可以考慮把所有的javascript代碼放在body的最底部,以便所有的頁面元素在執行時已經存在。 – Li0liQ