Получить данные из созданного iframe - PullRequest
0 голосов
/ 16 мая 2011

Я создаю iframe, который является тем же доменом, но другим поддоменом, и я хочу получить ссылку src внутри iframe с "document.getElementsByTagName ('a') [5];"

Как я могу это сделать?

1 Ответ

0 голосов
/ 16 мая 2011

Чтобы обойти политику того же происхождения, вы должны использовать document.domain - как на главной странице, так и в iframe, установите его в качестве домена главной страницы. Таким образом, если ваша главная страница находится в домене foo.com, а ваш iframe загружается с bar.foo.com, на обеих страницах установите document.domain = 'foo.com'. Вы должны сделать это для главной страницы, даже если вы установите для нее то же значение - см. Примечание ниже.

Теперь, чтобы получить элемент, вы можете делать то, что описано в этом SO-ответе :

var iframe = document.getElementById('iframeId');
var innerDoc = iframe.contentDocument || iframe.contentWindow.document;

Обновление

У MDC есть это, чтобы сказать:

Mozilla различает свойство document.domain, которое никогда не устанавливалось, из одного явно установленного в тот же домен, что и URL-адрес документа, даже если свойство возвращает одно и то же значение в обоих случаях. Один документ может получить доступ к другому, если они оба установили document.domain в одно и то же значение, что указывает на их намерение сотрудничать, или ни один из них не установил document.domain и домены в URL-адресах одинаковы (реализация). Если бы не эта специальная политика, каждый сайт подвергался бы XSS со своих поддоменов (например, https://bugzilla.mozilla.org может быть атакован ошибками вложения на https://bug*.bugzilla.mozilla.org).

Таким образом, и iframe, и включающая страница должны устанавливать одно и то же значение для document.domain

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