【发布时间】:2016-10-20 19:57:54
【问题描述】:
我的网站中有一个实时功能,可以打开服务器端触发的 socket.io 事件的新窗口(PHP/Laravel 5.1)。 问题是如果用户登录到我的网站并在多个选项卡/窗口中打开它 - 新的 window.open 多次开火,有谁知道我该如何防止它? 我的代码如下所示:
套接字监听器:
socket.on('message', function (data) {
data = JSON.parse(data);
if(typeof data.data !== "undefined"){
lead_data = data.data;
}else{
lead_data = data;
}
if(typeof lead_data !== "undefined" && (lead_data.event_name == "new_call" || lead_data.event_name == "new_unsaved_call")){
if(lead_data.user_id == uid){
window.App.openCallWindow(data);
}
}
});
和openCallWindow 函数:
openCallWindow : function(data){
void(0);
var lead_id = '';
if(data && data.lead){
lead_id = data.lead._id;
window.open('/leads/callLead/'+lead_id,'new_lead'+Math.floor((Math.random()*999)+1), "height=800,width=1200" );
}else if(typeof data.phone !== "undefined"){
window.open('/leads/callLead/?phone='+data.phone,'new_lead'+Math.floor((Math.random()*999)+1), "height=800,width=1200" );
}else{
window.open('/leads/callLead/'+lead_id,'new_lead'+Math.floor((Math.random()*999)+1), "height=800,width=1200" );
}
},
【问题讨论】:
标签: javascript socket.io dom-events