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

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

3 ответов


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

вы должны использовать обмен сообщениями между документами.

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

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

и в iframe:

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

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

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

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


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

Е. Г.

alert(top.location.href)

посмотреть http://cross-browser.com/talk/inter-frame_comm.html