Доступ дочернего iFrame DOM с родительской страницы - PullRequest
17 голосов
/ 03 марта 2011

Вот сделка:

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

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

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

Ответы [ 3 ]

28 голосов
/ 03 марта 2011

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

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

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

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

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

7 голосов
/ 03 марта 2011

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

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

0 голосов
/ 03 марта 2011

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

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