2013-02-08 41 views
0

我有2个HTML文档:1个主文档,其中有一个iframe,显示第二个HTML页面。使用jquery从外部从iframe中读取内容

我想从父文档访问iframe的内容。我试过使用find()contents(),但它不适合我。

这是我的代码:

主文档

<!DOCTYPE html> 
<html> 

<head> 
<script src="./js/gjquery.js"></script> 

<script type="text/javascript"> 
$(function(){ 
    $('#123').click(function(){ 
alert("Testing..."); 
var v = $('#frameDemo').contents().find('body').html(); 
alert(v); 
}); 
}) 
</script> 

</head> 

<body> 
    <button id="123" >mad</button> 
    <iframe src="./1.htm" width="80%" height="20%" id='frameDemo'></iframe> 
</body> 

iframe的文档

<html> 
<head></head> 

<body> 
<p>Hello <a href="http://ejohn.org/">John</a>, how are you doing?</p> 

<table width="700" border="1" id="test"> 
<tr><td>g</td><td>ggg</td></tr> 
<tr><td>g</td><td>ggg</td></tr> 
<tr><td>g</td><td>ggg</td></tr> 
</table> 

<p>Hello world!</p> 
<div id="someID">Hello world!</div> 

</body> 
</html> 

find()也未实施R剔除任何结果,无论我尝试使用哪个选择器。

+0

我看到错字'/ js/gjquery.js'。和控制台是你的朋友,开始使用它 – Peter 2013-02-08 17:25:43

+1

你能看到你的'测试'警报? – 2013-02-08 17:26:55

+0

是的......甚至显示另一个警报..但它来undefined – 2013-02-08 17:36:30

回答

1

只要两个html页面托管在相同的域上,选择iframe中的元素应该可以正常工作。我试过你的代码,它对我来说工作得很好。

但是,如果在iframe的页面上不同的域主办,外框将不能访问内部框架由于Same Origin Policy

如果是这样的话,你会看到在控制台类似的错误这一个:

不安全JavaScript尝试与URL http://www.bing.com/从帧帧访问URL与本地主机/ jqueryIframe/jqueryIframe.html域,协议和端口必须匹配。”

+0

我得到“未定义”消息第二次警报..我刚刚使用铬浏览器测试.. – 2013-02-08 18:05:30

+0

你可以尝试'警报($ ( “#frameDemo”)的内容()长度);”。对我来说,如果它是相同的域,则为1,如果它是不同的域,则为0。 – user2055306 2013-02-08 18:20:06

+0

它在Firefox中为1,在Google Chrome中为0。即使我在Firefox中得到了答案,但在Google chrome中未定义。 – 2013-02-08 18:26:44