2013-02-08 2 views
0

У меня есть 2 документа HTML: 1 основной документ, который имеет iframe, отображающий вторую страницу HTML внутри.Чтение содержимого из iframe извне с помощью jquery

Я хочу получить доступ к содержимому 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() не г eturn любые результаты, независимо от того, какой селектор я пытаюсь.

+0

Я вижу typo '/ js/gjquery.js'. И консоль - ваш друг, начните использовать его. – Peter

+1

Вы видите свое предупреждение «Тестирование»? –

+0

Да ... Даже отображение другого предупреждения .. Но оно не определено –

ответ

1

Выбор элементов в iframe должен работать нормально, пока обе страницы html размещены на в том же домене. Я пробовал ваш код, и он работал отлично для меня.

Однако, если страница в IFRAME размещается на другом домене , наружная рама не будет иметь доступ к внутренней раме из-за Same Origin Policy

Если это так, то вы увидите, ошибка в консоли похож на этот:

«небезопасный JavaScript попытка доступа кадр с URL http://www.bing.com/ от кадра с URL локального хоста/jqueryIframe/jqueryIframe.html домены, протоколы и порты должны соответствовать

+0

Я получаю сообщение «undefined» на втором оповещении. Я просто проверил использование браузера Chrome. –

+0

Можете ли вы попробовать «alert ($ ("#frameDemo") содержание() длина);... Для меня это 1, если это тот же домен или 0, если это другой домен. – user2055306

+0

это 1 в Firefox и 0 в Google chrome .. Даже я получил ответ в Firefox, но неопределенный в Google chrome .. –

Смежные вопросы