HTML 5 postmessage в опере 11.x - PullRequest
       15

HTML 5 postmessage в опере 11.x

1 голос
/ 08 сентября 2011

Я использую такую ​​конструкцию в iframe для отправки его высоты в родительское окно:

<body onload="parent.postMessage(document.body.scrollHeight, '*');">
    ...
</body>

в родительском окне есть слушатель:

function resizeCrossDomainIframe(id)
{
    var iframe = document.getElementById(id);
    window.addEventListener('message', function (event)
    {
        if (isNaN(event.data)) return;
        var height = parseInt(event.data);
        iframe.height = height + "px";
    }, false);
}

<iframe id="voice-iframe" scrolling="no" frameborder="0" onload="resizeCrossDomainIframe('voice-iframe');" src="http://localhost:2040/VoiceApi/Base">
</iframe>

этот код работает в ff, chrome, safari, ie9, возможно, в ie8, но не в опере 11 (хотя в «стрекозе» ошибки не отображаются). Я думал, что будут некоторые проблемы с т. е., но не с последней версией оперы. или, может быть, я что-то делаю неправильно?

1 Ответ

0 голосов
/ 13 сентября 2011

Я думаю, что onload срабатывает внутри сначала в IFRAME, затем postMessage () вызывает событие сообщения, а затем, наконец, запускается атрибут onload в IFRAME.Если вы добавите прослушиватель событий из обработчика загрузки тега IFRAME, вы, вероятно, запустите прослушать сообщение после его отправки, поэтому вы ничего не получите.

...