我使用這種結構中的iframe其高度發送到父窗口:HTML 5 PostMessage的歌劇11.x的
<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中(儘管蜻蜓中沒有顯示錯誤)。 我認爲會有一些問題,但不是與最後版本的歌劇。 或者我正在做錯誤?
問題在於opera中的postmessage是文檔的方法,而不是window的。 – donRumatta
這是不正確的(再) - 最初的實現是在文檔上,但它已更改爲window.postMessage()很久以前 – hallvors