Доступ к дочернему объекту iFrame DOM с родительской страницы

Вот сделка:

domain.com/page - родительская страница (document.domain = domain.com) содержит iframe sub.domain.com/page - дочерний iframe (document.domain = не установлен) находится на субдомене

Есть ли способ получить доступ к DOM этого iframe или мне не повезло?

Является ли такая же политика происхождения меня заставлять document.domain в iframe, содержащемся на родительской странице? Я полагаю, что это победит цель одной и той же политики происхождения. Если это так, есть ли какое-либо обходное решение для доступа к DOM iframe на отображаемой родительской странице?

Ответы

Ответ 1

Есть способ. Когда страница в iframe загружается, выполните следующие действия

parent.childGetElementById = function (id) {return document.getElementById(id);}
parent.childLoaded();

Это сделает функцию в глобальной области родительской страницы (содержащей iframe). Затем в родительском объекте просто введите

function childLoaded() {var dom = childGetElementById('someid');}

Это происходит, поскольку вы контролируете страницу, загружаемую вами в iframe... если этого не происходит, вам не повезло.

Ответ 2

Это мера безопасности браузера, иначе все будут обертывать ваши банковские сайты и сбрасывать ваши пароли при входе в систему.

Вы можете поговорить из iframe с родителем, но не вернуться в iframe снова.

Ответ 3

Вам не повезло, насколько я знаю. Вы можете говорить между ними, используя хеширование в URL-адресе, но см. this для достойного обсуждения.