2017-04-19 51 views
0

我有兩個文檔,其中一個使用iframe嵌入到另一個文檔中。我想利用這個代碼訪問iframe中img標籤,但是,我不能使用的document.getElementById函數的iframe元素:在JavaScript中的iframe中獲取DOM元素

iframes = document.getElementsByTagName("iframe") 
spaces = iframes[0].contentWindow.document; 
spaces = spaces.getElementsByTagName("img") 
for (var i=0, max=spaces.length; i < max; i++) { 
    alert(spaces[i].innerHTML) 
} 
alert(spaces) 
var x = document.getElementById("frame"); 
var y = (x.contentWindow || x.contentDocument); 
if (y.document)y = y.document; 
alert(y.body.innerHTML) 

空間返回[對象的HTMLCollection]和y返回[對象HTMLDocument的]

+0

嘗試提供更多代碼,如iframe後面的html – Felix

回答

0

所以,如果你在同一個域中的iframe中的內容,你可以使用

document.getElementById('my-iframe').contentWindow.document.getElementById(...) 

如果你不是在同一個域,你不能訪問/操縱iframe中的內容出於安全原因。否則惡意的人可能會拋出一個看起來像Facebook或其他內容的iframe,並竊取其他人的信息。

如果您不在同一個域中,但擁有您正在使用的兩個域,則可以在兩個框架之間設置messaging。並使用父母向孩子發送信息/操作信息。

+0

這對我來說是返回null。我應該補充說,嵌入式html頁面也嵌入了YouTube視頻,但我沒有訪問它。有趣的是,當我刪除「.getElementById(」space「)」部分時,它會返回[object HTMLDocument],但是當我添加它時,它將返回空值 – ColorCodin

+0

更多的調試顯示「document.getElementById(' my-iframe「)。contentWindow.document」對象只有一個屬性,位置。 – ColorCodin