0
我想在主窗口和頁面中加載的iframe之間進行通信。我過去做過這件事(代碼仍然有效),但是我不能在另一個項目中使用它。我創建了一個例子來重現這個問題。它有一個基本的服務器端(僅供應一些文件)使用Le Statique
module。使用postMessage時「消息」事件未被觸發
最重要的部分是客戶端,但讓我們先從服務器:
服務器(的NodeJS)
創建兩個服務器(在8000
一個聆聽和另一個監聽9000
)。
// Dependencies
var Statique = require("statique")
, Http = require('http')
;
Http.createServer(new Statique({
root: __dirname + "/receiver"
}).setRoutes({
"/": "/html/index.html"
}).serve).listen(8000);
Http.createServer(new Statique({
root: __dirname + "/sender"
}).setRoutes({
"/": "/html/index.html"
}).serve).listen(9000);
客戶
接收機
...
window.onload = function() {
addEventListener("message", function (e) {
// This part is never fired!
console.log("2", e.data);
}, false);
};
...
發件人
...
<body>
<iframe src="http://localhost:8000" frameborder="0" id="iframe"></iframe>
<script>
iframe.contentWindow.postMessage("hi", "*");
</script>
</body>
...
然而,從IFRAME "message"
事件不會被解僱。爲什麼?
我在控制檯中看不到任何錯誤。