Я хотел бы манипулировать HTML внутри iframe, используя jQuery.
Я думал, что смогу сделать это, установив контекст функции jQuery как документ iframe, что-то вроде:
$(function(){ //document ready
$('some selector', frames['nameOfMyIframe'].document).doStuff()
});
Однако это не похоже на работу. Немного осмотра показывает, что переменные в frames['nameOfMyIframe']
, undefined
если я не буду ждать некоторое время для загрузки iframe. Однако, когда iframe загружает переменные не доступны (я получаю permission denied
ошибки -типа).
Кто-нибудь знает обойти это?
.contentWindow.document
чем.document
наiframe
элементе. Я предлагаю изменения выше.Ответы:
Я думаю, что то, что вы делаете, подчиняется той же политике происхождения . Это должно быть причиной, по которой вы получаете ошибки типа «отказано в разрешении» .
источник
Если
<iframe>
это из того же домена, элементы легко доступны какСсылка
источник
same origin policy
, и в этом случае этот ответ не является решением для него.Вы можете использовать
.contents()
метод jQuery.источник
Если iframe src из другого домена, вы все равно можете это сделать. Вам нужно прочитать внешнюю страницу в PHP и отобразить ее с вашего домена. Нравится:
iframe_page.php
Тогда как то так:
display_page.html
Выше приведен пример того, как редактировать внешнюю страницу через iframe без доступа и т.д.
источник
same origin policy
существует, и предложение этого ответа не застраховано от этого.Я нахожу этот способ чище:
источник
использование
вместо
источник
Вам необходимо прикрепить событие к обработчику загрузки iframe и выполнить там js, чтобы убедиться, что iframe завершил загрузку, прежде чем получить к нему доступ.
Вышеприведенное решение решит проблему «еще не загружен», но в том, что касается разрешений, если вы загружаете страницу в iframe из другого домена, вы не сможете получить к ней доступ из-за ограничений безопасности.
источник
Вы можете использовать window.postMessage для вызова функции между страницей и его iframe (кросс-домен или нет).
Документация
page.html
iframe.html
источник
Я предпочитаю использовать другой вариант для доступа. Из parent вы можете получить доступ к переменной в дочернем iframe.
$
переменная тоже, и вы можете получить доступ к ее просто вызовуwindow.iframe_id.$
Например,
window.view.$('div').hide()
- скрыть все div в iframe с идентификатором 'view'Но это не работает в FF. Для лучшей совместимости вы должны использовать
$('#iframe_id')[0].contentWindow.$
источник
Вы пробовали классический вариант, ожидая завершения загрузки, используя встроенную функцию готовности jQuery?
К
источник
Я создаю пример кода. Теперь вы можете легко понять из другого домена, что вы не можете получить доступ к содержимому iframe .. Тот же домен, к которому мы можем получить доступ к содержимому iframe
Я поделился с вами своим кодом, пожалуйста, запустите этот код, проверьте консоль. Я печатаю изображение src на консоли. Существует четыре iframe, два iframe, поступающие из одного домена, и два других из другого домена (третье лицо). Вы можете увидеть два изображения src ( https://www.google.com/logos/doodles/2015/googles-new-logo -5078286822539264,3-hp2x.gif
а также
https://www.google.com/logos/doodles/2015/arbor-day-2015-brazil-5154560611975168-hp2x.gif ) в консоли, а также может отображаться две ошибки разрешения (2 Ошибка: в доступе к свойству «доступ запрещен» '
... irstChild)}, содержимое: function (a) {return m.nodeName (a, "iframe")? a.contentDocument ...
) который идет от стороннего iframe.
источник
Я остановился здесь на поиске содержимого iframe без jquery, так что для всех, кто ищет это, именно так:
источник
Это решение работает так же, как iFrame. Я создал PHP-скрипт, который может получить все содержимое с другого сайта, и наиболее важной частью является то, что вы можете легко применить свой пользовательский jQuery к этому внешнему контенту. Пожалуйста, обратитесь к следующему сценарию, который может получить все содержимое с другого веб-сайта, а затем вы также можете применить свой cusom jQuery / JS. Этот контент может использоваться где угодно, внутри любого элемента или любой страницы.
источник
Для еще большей надежности:
а также
источник