2013-05-16 9 views
8

Я делаю это в первый раз. Я создал iframe на своей странице, и мне нужен текст с iframe по jquery. Вот мой код:Получить данные из iframe

<html> 
    <head><script src="http://code.jquery.com/jquery-1.9.1.min.js"></script> 

    <script type="text/javascript"> 
    function copyIframeContent(iframe){ 
     var iframeContent = $(iframe).contents(); //alert(iframeContent); 
     //$("#result").text("Hello World"); 
     $("#result").html(iframeContent.find('body').html);alert(iframeContent.find('body').html()); 
    } 
    </script> 
    </head> 
    <body> 
    <iframe id="myIframe" onload="copyIframeContent(this);" name="myIframe" src="text.php"></iframe><br /> 
    Result:<br /> 
    <textarea id='result'></textarea> 
    <input type="button" value="click" id="btn" onclick="aa()"> 
    <script type="text/javascript"> 
     function aa(){ alert("Fdf"); 
      alert(document.getElementById('myIframe').contentWindow.document.body.innerHTML); 
    } 
    </script> 
    </body> 
</html> 

text.php:

text to change 

Я пробовал много во всех браузерах, но все это не работает. Может кто-нибудь помочь мне получить этот контент?

+0

да его же страница и в том же каталоге –

+1

«но все еще не работает». Мне просто интересно, что это значит? Пожалуйста, уточните, предоставив нам сообщение об ошибке, если оно есть –

+0

У меня есть копия/вставка здесь моего кода wholde, но он все еще работает, не знаю почему. в предупреждении это показывает мне [ObectObject] –

ответ

0

contentWindow работает как в FF и хром

document.getElementById('myFrame').contentWindow.document.body  

Даст вам DOM элемент тела

Вы также можете попробовать что-то вроде

window.frames['myIframe'].document.body  

Это может сделать трюк для вас также

Возможно, у вас возникли проблемы с созданием ваших браузеров в безопасности. Если вы запустите это на локальной машине. Существует способ отключить защиту браузеров.

+0

сначала я смотрю текст из текста из iframe, а затем я хочу заменить его моим div (результатом) –

+0

(document.getElementById ('myFrame'). contentWindow.document.body) .appendchild (div (результат)) http://www.w3schools.com/dom/met_element_appendchild.asp –

2

Используйте .contents(), чтобы добраться до DOM iFrame.

$('#myIframe').contents() 

UPDATE:

В OP:

$("#result").html(iframeContent.find('body').html); 

Должен сказать:

$("#result").html(iframeContent.find('body').html()); 
+0

OP уже использует содержимое() –

+0

его теперь работает .. я предупреждаю об этом, и я получаю «[объект obect]» в предупреждении box –

+0

'$ ('# myIframe'). contents(). find ('body'). html()' тоже? Только .contents() возвращает jQuery. –

0

Doing с JQuery будет немного проще:

$('Your Selector', frames['myIframe'].document) 

Приведенный выше пример получит от myIframe. Но iframe ДОЛЖЕН быть из того же домена, что и родительский документ. Если не из того же домена, возникает нарушение безопасности (вы не можете добавлять содержимое с иностранных сайтов на свою страницу и изменять этот контент.)

Если нет нарушения безопасности, вы можете сделать что-либо с выбором. Например, вы можете использовать метод jquery append() для вставки нового html внутри iFrame, вы можете использовать метод html() для замены html или любой другой функции, разрешенной jquery/pure javascript.

1
var content=$("iframe").contents().find('body').html(); 

alert(content); 
+5

Hiya, это вполне может решить проблему ... но было бы хорошо, если бы вы могли * отредактировать свой ответ * и дать небольшое объяснение о том, как и почему оно работает :) Не забудьте - есть кучи новичков на Переполнение стека, и они могли бы узнать кое-что из вашего опыта - что очевидно для вас, возможно, не так для них. –

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