Как для iframe получить доступ к DOM своих родителей?
Как возможно, чтобы script внутри <iframe>
имел какое-либо понятие страницы, содержащей его? Может ли script в кадре получить доступ к любому контексту вне его? Как насчет междоменного?
До сих пор я полагал, что <iframe>
полностью агностически относится к содержательной странице, но я видел пример, который противоречит этому убеждению.
Что именно можно и не может сделать из <iframe>
по отношению к содержащейся странице?
Ответы
Ответ 1
Если содержимое iframe и его родительского элемента имеют одинаковый домен, вы можете получить доступ к DOM родительских страниц из iframe, используя parent.document.getElement...
Однако вы не можете сделать это кросс-домен (даже между разными поддоменами), так как это приведет к:
Uncaught DOMException: Blocked a frame with origin "https://example.com" from accessing a cross-origin frame.
Ответ 2
Как правило, вы не можете связываться между двумя доменами DOM через домены. Тем не менее, есть способ передать сообщения между ними, используя хэш-часть URL-адреса iframe. Для iframes в том же домене см. ответ oezi.
Это может оказать некоторую помощь, а также множество других вопросов по этой теме.
Ответ 3
Если они не находятся в одном домене, вы можете передавать некоторую информацию через фрагмент/хэш URL-адреса. Вот хороший пример этого процесса...
http://www.tagneto.org/blogcode/xframe/ui.html
Ответ 4
Ознакомьтесь с этой статьей, все, что вам нужно знать о xss с iframe
http://softwareas.com/cross-domain-communication-with-iframes