2011-04-29 90 views
1

我想使用JavaScript從iframe獲取元素。我試過以下內容:如何從iframe獲取元素

var iframe = document.getElementById(「iframe id」);

var iframeWindow = iframe.contentWindow || iframe.contentDocument.parentWindow;

iframe.onload = function(){ 


     alert(iframeWindow.getElementById('notice')); 

    }; 

有沒有人能幫我找到工作?

與跨域

感謝答覆

+2

是在同一個域的irfame SRC?你發佈的內容應該有效,會發生什麼? (也應該接受一些答案!) – 2011-04-29 18:06:44

+0

取消刪除它,我讀取的原始問題是詢問如何獲取iframe參考 – 2011-04-29 18:11:36

回答

3

假定其所有在同一個域;

var ifr = document.getElementById('the_iframes_id'); 
//or window.frames[x]. 
var doc = ifr.contentDocument || ifr.contentWindow.document; 
alert(doc.getElementById('notice')); 

如果它不在同一個域中,出於安全原因無法訪問它。

+0

+1,這應該在所有瀏覽器中正常工作。 – 2011-04-29 18:12:02

+0

我不會做與跨域這不能幫助我 – jayesh 2011-04-29 18:15:35

+0

@ jayesh,不能這樣做 – Neal 2011-04-29 18:19:33

0

如果您希望跨域進行此操作,那麼您運氣不好。 Javascript的安全模型不會允許它。

我不知道你在努力完成什麼,但是你可能能夠通過服務器端腳本獲得你所需要的。一個Perl/PHP/Python/Ruby /任何腳本通常都可以檢索任何你需要的網頁。然後它可以解析出您需要的位,並通過AJAX調用將其返回給您的Javascript。

當然,這比使用JS更復雜,並且假設iframe的內容不是動態的,現在基於cookie或其他會話事物。

0
document.getElementById('iframeResult').contentWindow.document.getElementById('buttonId') 

其中iframeResult是和iframe的標識buttonId是元素的標識