Как общаться между iframe и родительским сайтом?

499
42

Веб-сайт iframe не расположен в том же домене, но оба являются моими, и я хотел бы общаться между iframe и родительским сайтом. Возможно ли это?

спросил(а) 2021-01-25T16:04:24+03:00 4 месяца, 4 недели назад
1
Решение
643

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


Вы должны использовать кросс-документацию.


Например, в верхнем окне:

 myIframe.contentWindow.postMessage('hello', '*');

и в iframe:


window.onmessage = function(e){
if (e.data == 'hello') {
alert('It works!');
}
};

ответил(а) 2021-01-25T16:04:24+03:00 4 месяца, 4 недели назад
172

Эта библиотека поддерживает HTML5 postMessage и устаревшие браузеры с изменением размера + хэш https://github.com/ternarylabs/porthole


Изменить: теперь в 2014 году использование IE6/7 довольно невелико, IE8 и, прежде всего, поддерживают postMessage, поэтому я предлагаю просто использовать это.

https://developer.mozilla.org/en-US/docs/Web/API/Window.postMessage

ответил(а) 2021-01-25T16:04:24+03:00 4 месяца, 4 недели назад
89

Свойство window.top должно быть в состоянии дать то, что вам нужно.


например.


alert(top.location.href)

См
http://cross-browser.com/talk/inter-frame_comm.html

ответил(а) 2021-01-25T16:04:24+03:00 4 месяца, 4 недели назад
-10

вы можете использовать почтовый API (почтовый js/postal xframe/postal fedration)

ответил(а) 2021-01-25T16:04:24+03:00 4 месяца, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема