8
有些事情我沒有通過javascript postMessage事件瞭解到事件源。從沙盒iFrame到主窗口的PostMessage始發始終爲空
這是我的主網頁:
<html>
<body>
<h1>Test</h1>
<h2>Outside</h2>
<iframe src="iframe-include.html"
width="100%" height="100"
sandbox="allow-scripts"></iframe>
<script type="text/javascript">
window.addEventListener('message', function (event) {
console.log(event);
}, false);
</script>
</body>
</html>
而且我的iFrame內容
<html>
<body>
<h3>Inside</h3>
<script type="text/javascript">
var counter = 1,
domain = window.location.protocol + '//' + window.location.host,
send = function() {
window.setTimeout(function() {
console.log('iframe says:', domain);
window.parent.postMessage(counter, domain);
counter += 1;
send();
}, 3000);
};
send();
</script>
</body>
</html>
查看控制檯,事件對象的origin屬性總是空,即使在域變量iFrame是正確的。
我的控制檯說:
iframe-include.html:11 iframe says: http://127.0.0.1:8181
iframe.html:11 MessageEvent {isTrusted: true, data: 2, origin: "null", lastEventId: "", source: Window…}
在每個文檔,它說,它以檢查日「信息」事件監聽器裏event.origin是很重要的。但如何做到這一點,如果它總是空?
感謝您的幫助
[無法在'DOMWindow'上執行'postMessage':提供的目標原點與收件人窗口的原點('null')]不匹配(http://stackoverflow.com/questions/22194409/failed- domwindow-the-target-origin-provided-does) –
不,這是一個完全不同的問題,雖然原因是一樣的。我也有... – Sych