2013-10-24 58 views
0

如果您知道iframe的ID,如何選擇頁面上的iframe DOM對象?假設頁面上可能存在多個iframe,並且您不知道該問題的位置,也沒有jQuery解決方案。我想出了以下內容,但是,我希望它可以更加微不足道。獲取給定ID的iframe

編輯。我試圖讓DOM對象,這樣我就可以訪問這些屬性window.frames[0].innerHeight

function getIframe(id) { 
    var iframe=null; 
    for (var i = window.frames.length - 1; i >= 0; i--) { 
     if(window.frames[i].frameElement.id==id){iframe=window.frames[i];break;} 
    } 
    return iframe; 
} 
+0

@RGraham你是什麼意思? – user1032531

+0

我正在尋找代表iframe的對象。例如,'window.frames [0]'將返回頁面上第一個iframe的對象。另一方面,document.getElementById(「myIFrame」)和window.frames ['myIFrame']'將返回iframe的HTML。對不起,如果我的描述使用不正確的命名法,因爲iframe對我來說還是新手。謝謝 – user1032531

回答

1

看到這個答案:

Access iframe elements in JavaScript

window.frames['myIFrame'] 

編輯:

我對FF和Chrome做了一些測試,得出以下結論。

window.frames["myFrame"]回報:

`[object HTMLIFrameElement]` when on FF (v24) 
    `[object Window]` when on Chrome (v 30.0.1599.101) 

我們可以作出這樣的控制HTMLIFrameElement財產contentWindow得到的iframe Window

var myFrame = (window.frames["myFrame"].contentWindow ? window.frames["myFrame"].contentWindow : window.frames["myFrame"]) 

這樣的變量myFrame存儲在Window對象。

如果現在我們想要得到的DOM元素HTMLIFrameElement我們可以簡單地這樣做:

var domElement = myFrame.frameElement 

希望這將是有益的。

+0

這與'document.getElementById(「myIFrame」)'相同。我正在嘗試獲取DOM對象。抱歉不清楚。 – user1032531

+0

也許我錯過了一些東西,但是它沒有在您的示例中顯示innerHeight爲undefined?請參閱http://jsfiddle.net/VQ5ar/2/ – user1032531

+0

@ user1032531對不起在Chrome中測試...檢查此,在這裏你有DOM對象[http://jsfiddle.net/VQ5ar/4/](http ://jsfiddle.net/VQ5ar/4/)。它適用於Chrome和Firefox,IE未經測試。有關HTMLIFrameElement的更多信息,請參閱[https://developer.mozilla.org/en/docs/Web/API/HTMLIFrameElement](https://developer.mozilla.org/en/docs/Web/API/HTMLIFrameElement) – Jonathan

0
var el = document.querySelector('#test'); 

var matches = el.querySelectorAll('iframe'); 

readmore:http://slides.html5rocks.com/#new-selectors

+0

這將返回iframe的節點列表。如何獲得給定ID的特定iframe對象?另外,我是否需要在所有可能的iframe中包裝#test? – user1032531

+0

你可以使用querySelector(「#idOfmyFrame」); –