使用WebSocket(Javascript)在其他窗口中模拟鼠标事件
这里我试图实现的是,制作一个websocket程序,如果用户在一个窗口中“mousedown+mousemoves”,则在另一个浏览器窗口中触发相同的事件。 以下是我迄今为止所做的工作: 客户端JS代码: 现在,此代码由JS中的客户端按以下方式处理:使用WebSocket(Javascript)在其他窗口中模拟鼠标事件,javascript,php,jquery,websocket,Javascript,Php,Jquery,Websocket,这里我试图实现的是,制作一个websocket程序,如果用户在一个窗口中“mousedown+mousemoves”,则在另一个浏览器窗口中触发相同的事件。 以下是我迄今为止所做的工作: 客户端JS代码: 现在,此代码由JS中的客户端按以下方式处理: websocket.onmessage=函数(ev){ var msg=JSON.parse(ev.data);//PHP发送JSON数据 var wwx=msg.we; var mmx=msg.me; var ex=msg.ev; var
websocket.onmessage=函数(ev){
var msg=JSON.parse(ev.data);//PHP发送JSON数据
var wwx=msg.we;
var mmx=msg.me;
var ex=msg.ev;
var uname=msg.name;//用户名
var xx=msg.x;
var yy=msg.y;
如果(!(uname==“”){
如果(ex==“移动”){
eone=$.Event('mousemove');
eone.pageX=xx;
eone.pageY=yy;
etwo=$.Event('click');
etwo.pageX=wwx;
etwo.pageY=mmx;
$(文档).trigger(eone).trigger(etwo);
}
这段代码没有触发任何东西。有什么想法吗?有什么解决办法吗?没有足够的数据,请说明它被卡住的位置。消息是否被发送?它是否到达另一端?控制台中是否有任何错误?问题出在“$(文档)。触发器(eone)。触发器(etwo);”行中出于某种原因,它不起作用……我尝试从代码中删除它,然后用坐标和代码发出警报,效果很好,但当我重新添加它时,它会发出警报……从一个事件到另一个事件,有什么可能会停止?我们可以触发多个这样的事件吗?你现在可能已经解决了这个问题,但如果没有,我会尝试减少你的问题可以归结为一个简单的JSFIDLE,它将鼠标移动到一个特定的点并触发一次点击。如果这不起作用,那么文章的其余部分都是无关的,只是噪音,你会更成功地得到响应。
var clicking = false;
$(document).mouseup(function(){
clicking = false;
});
$('#canvas').mousedown(function(e){
clicking = true;
var ww= e.pageX;
var mm = e.pageY;
('#canvas').mousemove(function(event){
if(clicking === false)
{
var msg = { //sends data
w:'',
m:'',
type:"simple",
x:event.pageX,
y:event.pageY,
name: myname,
color : '<?php echo $colours[$user_colour]; ?>'
};
}
else{
var msg = {
w:'ww',
m:'mm',
type:"move",
x:event.pageX,
y:event.pageY,
name: myname,
color : '<?php echo $colours[$user_colour]; ?>'
};
}
websocket.send(JSON.stringify(msg));
});
});
$tst_msg = json_decode($received_text); //json decode
$user_name = $tst_msg->name; //sender name
$typ = $tst_msg->type;
$m = $tst_msg->m; //clickcoordinates
$w = $tst_msg->w;
$x = $tst_msg->x;// coordinates
$y = $tst_msg->y; // y-coordinate (user)
$e = $tst_msg->ev;
//prepare data to be sent to client
if($typ == "move"){
$response_text = mask(json_encode(array('me'=>$m,'we'=>$w,'ev'=>'moving','type'=>'usermsg', 'name'=>$user_name, 'x'=>$x,'y'=>$y)));
send_message($response_text); //send data
}
else{
$response_text = mask(json_encode(array('me'=>$m,'we'=>$w,'ev'=>'simple','type'=>'usermsg', 'name'=>$user_name, 'x'=>$x,'y'=>$y)));
send_message($response_text); //send data
}
websocket.onmessage = function(ev) {
var msg = JSON.parse(ev.data); //PHP sends Json data
var wwx = msg.we;
var mmx = msg.me;
var ex = msg.ev;
var uname = msg.name; //user name
var xx = msg.x;
var yy = msg.y;
if(!(uname== "<?php echo $_COOKIE['name'];?>")){
if(ex=="moving"){
eone = $.Event('mousemove');
eone.pageX = xx;
eone.pageY = yy;
etwo = $.Event('click');
etwo.pageX = wwx;
etwo.pageY = mmx;
$(document).trigger(eone).trigger(etwo);
}