我與HTML郵件通道的問題5 一方面我的代碼:頻道消息使用Javascript
<iframe id="ifr" src="receive.html" onLoad="initMessaging()" ></iframe>
<button onClick="postMsg()">Wyslij</button>
<script type="text/javascript">
var channel = new MessageChannel();
channel.port1.onmessage = function (evt) {
alert(evt.origin + ": " + evt.data);
};
function initMessaging() {
var child = document.getElementById("ifr");
child.contentWindow.postMessage('hello', 'http://localhost:85', [channel.port2]);
}
function postMsg() {
channel.port1.postMessage('Message sent from ' + location.host);
}
而在第二現場:
<input type="button" value="Post Message" onClick="postMsg();" />
<script type="text/javascript">
var port = null;
window.addEventListener("message", function (e) {
port = e.ports[0];
port.onmessage = function (e){
port.addEventListener("message", function (evt) {alert("Received message \"" + evt.data + "\" from domain: " + evt.origin);
}, false);
}
}, false);
function postMsg() {
if(port) {
port.postMessage("Data sent from " + location.host);
}
爲什麼它不工作?我做錯了什麼?
Thx很多幫助!
什麼是您正在實例化的MessageChannel對象?我看到的演示不需要這些。另外,我只注意到根據W3規範,你的port.postMessage調用應該被認爲是port.source.postMessage? – 2012-02-07 13:10:05
我是根據 中的信息創建此代碼的時候,在postMessage。('hello','http:// localhost:85',[channel。 )給postMessage('hello','http:// localhost:85'),所以這是一個關於頻道問題的問題。 –
Jimmusiek
2012-02-07 17:15:32
是的,我挖了一點,看到了。我期待看到我能找到的東西。這是一個有趣的問題,因爲我可能必須將其用於項目。 – 2012-02-07 19:33:37