2013-07-09 16 views
2

我繼承了一些javascript代碼,它直接通過它的名字訪問iframe,沒有任何getElementById()或任何東西。我找不到任何跡象表明這實際上是合法的,但似乎可以在我嘗試過的瀏覽器(Chrome,Firefox,IE10,Windows for Safari)中使用。按名稱直接訪問iframe - 這是合法的嗎?

簡單的測試案例:

<iframe name="iFrameName" id="iFrameId" src="test2.html"></iframe> 
<button onclick="iFrameName.myFunction();">click me</button> 

而iframe的test2.html src包含:

<script type="text/javascript"> 
    function myFunction() 
    { 
     alert("OH HAI!"); 
    } 
</script> 

點擊按鈕完美的作品 - 「OH HAI」 彈出警報。

這是如何工作的?它應該工作嗎?依靠還是應該使用getElementById()來檢索iframe是否安全?

回答

1

這是如何工作的?它應該工作嗎?

是的,有一段時間元素只能通過名稱訪問,而且大多數(所有?)瀏覽器仍然支持它。請參閱QuirksMode page about it,這是幾年前寫的,但仍然適用。

安全依賴還是應該使用getElementById()來檢索iframe?

您應該使用document.getElementById()等現代方法。如果你依賴名字,你的代碼很快就會變得混亂。