Как для iframe получить доступ к DOM своих родителей? - PullRequest
17 голосов
/ 12 апреля 2010

Как для сценария в пределах <iframe> возможно иметь какое-либо представление о странице, содержащей его? Может ли скрипт в кадре получить доступ к какому-либо контексту вне его? А как насчет междоменных?

До сих пор я верил, что <iframe> является полностью независимым от содержащейся страницы, но я видел пример, который противоречит этому убеждению.

Что именно может и не может быть сделано изнутри <iframe> относительно содержащейся страницы?

Ответы [ 3 ]

34 голосов
/ 12 апреля 2010

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

Однако вы не можете сделать этот междоменный домен (даже между разными поддоменами), так как это приведет к:

Uncaught DOMException: Blocked a frame with origin "https://example.com" from accessing a cross-origin frame.
5 голосов
/ 12 апреля 2010

Как правило, вы не можете общаться между двумя DOM через домены. Тем не менее, существует способ передавать сообщения между ними, используя хэш-часть URL-адреса iframe. Информацию о фреймах в одном домене см. В ответе oezi .

Это может помочь , и здесь есть много других вопросов по теме.

2 голосов
/ 16 апреля 2010

Если они не находятся в одном домене, вы можете передавать некоторую информацию через фрагмент / хэш URL. Вот хороший пример этого процесса ...

http://www.tagneto.org/blogcode/xframe/ui.html

...