Может ли javascript получить доступ к элементам iframe с родительской страницы? - PullRequest
6 голосов
/ 08 апреля 2009

У меня есть iframe на странице, iframe и родительская страница находятся в другом домене, может ли код JavaScript на родительской странице получить доступ к элементам внутри этого iframe?

Ответы [ 7 ]

12 голосов
/ 08 апреля 2009

Не должно быть возможности, если страницы принадлежат разным доменам, в изолированной программной среде безопасности браузера должен быть запрещен этот тип доступа. Он может работать, когда две страницы принадлежат разным суб доменам одного и того же домена, но это может и будет отличаться для разных браузеров (и, возможно, даже для версий одного и того же браузера).

Доступ к дочернему iframe может сработать, но, скорее всего, наоборот не сработает.

3 голосов
/ 08 апреля 2009

Самый простой способ - через объект кадров в окне, например:

window.frames[0].document.getElementById('ElementId').style.backgroundColor="#000";
1 голос
/ 06 июня 2018

Вы можете использовать CORS для достижения этой цели, в частности, изменив значение document.domain для соответствия как родительскому, так и дочернему. Но, пожалуйста, поймите, что это значит для безопасности, и что вам требуется доступ к исходному коду как родительских, так и дочерних документов.

Это особенно важно, если у вас есть несколько поддоменов. Я использую эту технику все время, поэтому я знаю, что она работает, даже с SSL.

1 голос
/ 12 ноября 2011

Использовать плагин jQuery.postMessage http://benalman.com/code/projects/jquery-postmessage/docs/files/jquery-ba-postmessage-js.html

Браузеры протестированы Internet Explorer 6-8, Firefox 3, Safari 3-4, Chrome, Opera 9.

1 голос
/ 11 октября 2011

Это можно сделать с помощью Chrome, используя параметр --disable-web-security ...;)

1 голос
/ 11 октября 2011

Если два домена полностью разделены, то это невозможно

0 голосов
/ 08 апреля 2009

Да, через массив document.frames вы можете получить доступ к iframes.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...