我正试图做一个简单的postMessage例子......
删除这些条件中的任何一个,并且工作正常:-)
但据我所知,postMessage当两个窗口共享一个原点时,窗口之间似乎只能在IE10中工作.(嗯,事实上 - 奇怪的是 - 行为稍微宽容一点:共享主机的两个不同的起源似乎也有效).
(注意:这个问题触及了问题,但它的答案是关于IE8和IE9 - 而不是10)
更多细节+例子......
<!DOCTYPE html>
<html>
<script>
window.addEventListener("message", function(e){
console.log("Received message: ", e);
}, false);
</script>
<button onclick="window.open('http://jsbin.com/ameguj/1');">
Open new window
</button>
</html>
Run Code Online (Sandbox Code Playgroud)
<!DOCTYPE html>
<html>
<script>
window.opener.postMessage("Ahoy!", "*");
</script>
</html>
Run Code Online (Sandbox Code Playgroud)
这适用于:http://jsbin.com/ahuzir/1 - 因为两个页面都托管在同一个源(jsbin.com).但是将第二页移到其他地方,它在IE10中失败了.
html5 compatibility postmessage cross-browser internet-explorer-10
我按照本教程http://davidwalsh.name/window-postmessage,创建了跨域消息传递脚本,可以在Chrome和Firefox中使用,但不能在IE 10中使用.有人能给我一些关于如何修改IE 8+的点击吗?
在一个服务器(例如:192.168.15.223) - 接收器
<script>
//listener
window.addEventListener('message',function(event) {
if(event.origin !== 'http://120.0.0.211') return;
document.getElementById('cc').innerHTML = event.data;
},false);
window.attachEvent('onmessage',function(event) {
if(event.origin !== 'http://120.0.0.211') return;
document.getElementById('cc').innerHTML = event.data;
},false);
</script>
<p>At 192.18.15.223 server</p>
<div id='cc'>Nothing received yet</div>
Run Code Online (Sandbox Code Playgroud)
在另一台服务器(例如:120.0.0.211) - 发件人
<script>
//create popup window
var domain = 'http://192.18.15.223';
var myPopup = window.open(domain + '/receiver','myWindow','width=400,height=200');
//message sender
function popup(){
var message = 'A message sent from 120.0.0.211:';
myPopup.postMessage(message,domain); //send the message and target URI
}
</script>
<div id="bb">At 120.0.0.211 server</div> …Run Code Online (Sandbox Code Playgroud)