Javascript 本·阿尔曼';s postMessage,浏览器窗口之间的双向通信

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

因此,我一直在研究如何在支持IE7+、Chrome和Firefox的同一域中的浏览器窗口之间进行双向通信。我不喜欢使用cookie轮询,但当我转换为
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>