Javascript 本·阿尔曼';s postMessage,浏览器窗口之间的双向通信
因此,我一直在研究如何在支持IE7+、Chrome和Firefox的同一域中的浏览器窗口之间进行双向通信。我不喜欢使用cookie轮询,但当我转换为Javascript 本·阿尔曼';s postMessage,浏览器窗口之间的双向通信,javascript,jquery,postmessage,Javascript,Jquery,Postmessage,因此,我一直在研究如何在支持IE7+、Chrome和Firefox的同一域中的浏览器窗口之间进行双向通信。我不喜欢使用cookie轮询,但当我转换为open.window(),我就没有运气了 这段代码可以双向工作吗(目前它只在父级和子级之间工作,而在IE中根本不工作)?或者是否有其他非cookie,即支持插件/代码示例? 欢迎提出任何建议 index.html(删除下面的逗号和注释行,使其朝一个方向工作) 消息后测试 var target=window.open(“http://localho
open.window()
,我就没有运气了
这段代码可以双向工作吗(目前它只在父级和子级之间工作,而在IE中根本不工作)?或者是否有其他非cookie,即支持插件/代码示例?
欢迎提出任何建议
index.html(删除下面的逗号和注释行,使其朝一个方向工作)
消息后测试
var target=window.open(“http://localhost/child.html“,‘弹出窗口’,‘工具栏=否,目录=否,状态=否,菜单栏=否,宽度=400,高度=300,屏幕X=100,屏幕Y=100,顶部=100,左侧=100’;
功能贴(信息){
$.postMessage(消息,'http://localhost/child.html",目标),;
}
$(文档).ready(函数()
{
$.receiveMessage(函数(e){
$(“#msg”).append('Received:'+e.data+'');
},
'http://localhost/child.html“//删除此行,它将在1个方向上工作。
);
});
父窗口
留言
响应:
child.html
<html>
<head>
<!-- index.html -->
<title>postmessage Test</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript" src="BNCConnector-compr.js" type="text/javascript"></script>
<script type="text/javascript">
var target = window.open("http://localhost/child.html",'popupWindow','toolbar=no,directories=no,status=no,menubar=no,width=400,height=300,screenX=100,screenY=100,top=100,left=100');
var connectorInstance;
BNCConnectorMonitor.start();
function post(message) {
connectorInstance.sendData('CH',message);
}
connectorInstance = new BNCConnector("PA");
connectorInstance.listen = function(who,msg){
$("#msg").append('<span>RECEIVED: '+who+' says: '+msg+'</span><br/>');
};
connectorInstance.onerror = function(type,o){
$("#msg").append('<span>ERROR: '+o[0]+' to '+o[1]+' caused by '+type+'</span><br/>');
};
connectorInstance.onsent = function(o){
// $("#msg").append('<span>SUCCESS SENDING TO IP: '+o[1]+" says: "+o[0]+'</span><br/>');
};
</script>
</head>
<body>
Parent Window<br/>
<button class="send-button" onclick="post('parents message');">Post message</button>
<br/>Response:<br/>
<div id="msg"></div>
</body>
</html>
邮资儿童
var target=window.parent;
功能贴(信息){
$.postMessage(消息,'http://localhost",目标),;
}
$(文档).ready(函数()
{
$.receiveMessage(函数(e){
$(“#msg”).append('Received:'+e.data+'');
},
'http://localhost'
);
});
弹出窗口
留言
响应:
其他:
我刚刚尝试了Privateland.com BNC连接器——基于tcp/cookie的通信,在Chrome、Firefox和Opera中工作得很好,但在IE8中速度很慢——对于间歇性通信来说没问题,对于持续通信来说不好
消息后测试
var target=window.open(“http://localhost/child.html“,‘弹出窗口’,‘工具栏=否,目录=否,状态=否,菜单栏=否,宽度=400,高度=300,屏幕X=100,屏幕Y=100,顶部=100,左侧=100’;
var连接电阻;
BNCConnectorMonitor.start();
功能贴(信息){
connectorInstance.sendData('CH',消息);
}
connectorInstance=新的BNC连接器(“PA”);
connectorInstance.listen=函数(who,msg){
$(“#msg”).append('RECEIVED:'+who+'表示:'+msg+'
');
};
connectorInstance.OneError=函数(类型,o){
$(“#msg”).append('ERROR:'+o[0]+'到'+o[1]+'由'+type+'
'引起);
};
connectorInstance.onsent=函数(o){
//$(“#msg”).append('successsending TO IP:'+o[1]+'表示:“+o[0]+'
');
};
父窗口
留言
响应:
邮资儿童
var连接电阻;
BNCConnectorMonitor.start();
功能贴(信息){
对于(var i=0;i
<html>
<head>
<!-- child.html -->
<title>postmessage Child</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript" src="ba-postmessage.js"></script>
<script type="text/javascript">
var target = window.parent;
function post(message) {
$.postMessage(message,'http://localhost',target);
}
$(document).ready(function()
{
$.receiveMessage(function(e) {
$("#msg").append('<pre> Received: '+e.data+' </pre>');
},
'http://localhost'
);
});
</script>
</head>
<body>
Popup Window<br/>
<button class="send-button" onclick="post('childs message');">Post message</button>
<br/>Response:<br/>
<div id="msg"></div>
</body>
</html>
<html>
<head>
<!-- index.html -->
<title>postmessage Test</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript" src="BNCConnector-compr.js" type="text/javascript"></script>
<script type="text/javascript">
var target = window.open("http://localhost/child.html",'popupWindow','toolbar=no,directories=no,status=no,menubar=no,width=400,height=300,screenX=100,screenY=100,top=100,left=100');
var connectorInstance;
BNCConnectorMonitor.start();
function post(message) {
connectorInstance.sendData('CH',message);
}
connectorInstance = new BNCConnector("PA");
connectorInstance.listen = function(who,msg){
$("#msg").append('<span>RECEIVED: '+who+' says: '+msg+'</span><br/>');
};
connectorInstance.onerror = function(type,o){
$("#msg").append('<span>ERROR: '+o[0]+' to '+o[1]+' caused by '+type+'</span><br/>');
};
connectorInstance.onsent = function(o){
// $("#msg").append('<span>SUCCESS SENDING TO IP: '+o[1]+" says: "+o[0]+'</span><br/>');
};
</script>
</head>
<body>
Parent Window<br/>
<button class="send-button" onclick="post('parents message');">Post message</button>
<br/>Response:<br/>
<div id="msg"></div>
</body>
</html>
<html>
<head>
<!-- child.html -->
<title>postmessage Child</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript" src="BNCConnector-compr.js" type="text/javascript"></script>
<script type="text/javascript">
var connectorInstance;
BNCConnectorMonitor.start();
function post(message) {
for(var i=0;i<10;i++) {
connectorInstance.sendData('PA',message);
}
}
connectorInstance = new BNCConnector("CH");
connectorInstance.listen = function(who,msg){
$("#msg").append('<span>RECEIVED: '+who+' says: '+msg+'</span><br/>');
};
connectorInstance.onerror = function(type,o){
$("#msg").append('<span>ERROR: '+o[0]+' to '+o[1]+' caused by '+type+'</span><br/>');
};
connectorInstance.onsent = function(o){
// $("#msg").append('<span>SUCCESS SENDING TO IP: '+o[1]+" says: "+o[0]+'</span><br/>');
};
</script>
</head>
<body>
Popup Window<br/>
<button class="send-button" onclick="post('childs message');">Post message</button>
<br/>Response:<br/>
<div id="msg"></div>
</body>
</html>