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




html ajax (4)

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

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

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

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


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

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

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

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

и в iframe:

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


может быть немного поздно, так как все остальные ответы стареют :-) но ... вот мое решение. Протестировано в реальных FF, Chrome и Safari 5.0.

CSS:

iframe {border:0; overflow:hidden;}

JavaScript:

$(document).ready(function(){
    $("iframe").load( function () {
        var c = (this.contentWindow || this.contentDocument);
        if (c.document) d = c.document;
        var ih = $(d).outerHeight();
        var iw = $(d).outerWidth();
        $(this).css({
            height: ih,
            width: iw
        });
    });
});

Надеюсь, это поможет кому угодно.





javascript html ajax iframe