Як отримати доступ до вмісту iframe за допомогою jQuery?


116

Як я можу отримати доступ до вмісту iframe за допомогою jQuery? Я спробував це зробити, але це не вийшло:

Вміст рамки: <div id="myContent"></div>

jQuery: $("#myiframe").find("#myContent")

Як я можу отримати доступ myContent?


Подібно до jquery / javascript: доступ до вмісту iframe, але прийнята відповідь - це не те, що я шукав.


Щойно я виявив, що вбудована змінна $ у консолі Firefox зовсім не схожа на повний jQuery. (Я зрозумів це після того, як зрозумів, що і у мене немає змінної jQuery, потім зрозумів, що я не завантажував вихідний код jQuery).
вугор ghEEz

Відповіді:


214

Ви повинні використовувати contents()метод:

$("#myiframe").contents().find("#myContent")

Джерело: http://simple.procoding.net/2008/03/21/how-to-access-iframe-in-jquery/

API Doc: https://api.jquery.com/contents/


3
дай мені помилку: Помилка: Дозволено заборонено на доступ до власності "ownerDocument"
Імран Хан

26
ime: Ймовірно, вона дає вам помилку через наступні причини: 1) Iframe не належить до одного домену. 2) Ви намагаєтеся прочитати його перед подією завантаження Iframe.
iMatoria

1
Чи є спосіб перевірити, чи вміст iframe з одного домену, перш ніж спробувати отримати доступ до нього та отримати помилку?
Камафезер

2
URL-адреса джерела зламана.
karthzDIGI

1
@jperezmartin: Вам доведеться використовувати деяку бібліотеку javascript, яка передаватиме інформацію між головною сторінкою та iframe. В основному його браузер відмовив через функціональність переглядача. Мені шкода, я не знаю жодної такої бібліотеки, тому що я ніколи її не вимагав.
iMatoria

21
<html>
<head>
<title></title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"></script>
<script type="text/javascript">

$(function() {

    //here you have the control over the body of the iframe document
    var iBody = $("#iView").contents().find("body");

    //here you have the control over any element (#myContent)
    var myContent = iBody.find("#myContent");

});

</script>
</head>
<body>
  <iframe src="mifile.html" id="iView" style="width:200px;height:70px;border:dotted 1px red" frameborder="0"></iframe>
</body>
</html>

15

Якщо джерелом iframe є зовнішній домен, веб-переглядачі приховуватимуть вміст iframe (Однакова політика оригіналу). Вирішення проблеми - це збереження зовнішнього вмісту у файлі, наприклад (у PHP):

<?php
    $contents = file_get_contents($external_url);
    $res = file_put_contents($filename, $contents);
?>

потім дістаньте новий вміст файлу (рядок) і проаналізуйте його на html, наприклад (у jquery):

$.get(file_url, function(string){
    var html = $.parseHTML(string);
    var contents = $(html).contents();
},'html');
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.