2011-04-29 76 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是元素的标识