Доступ к дочернему объекту 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 для достойного обсуждения.