2013-02-08 78 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