dsgd5756 2014-04-16 06:24
浏览 100

使用websockets在其他窗口中模拟鼠标事件(Javascript)

Here what I am trying to achieve is , to make a websocket program in which if a user "mousedown + mousemoves" in a window same event is triggered in the other browser window.

So here is what I have done so far:

Client Side JS Code:

 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));   


 });
});

Now Server side Code for handling data:

    $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
        }

Now this code is handled by client in JS in following way :

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);


    }

This code is not triggering anything tho.Any ideas? what might be a workaround?

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥20 关于#硬件工程#的问题,请各位专家解答!
    • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
    • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
    • ¥30 截图中的mathematics程序转换成matlab
    • ¥15 动力学代码报错,维度不匹配
    • ¥15 Power query添加列问题
    • ¥50 Kubernetes&Fission&Eleasticsearch
    • ¥15 報錯:Person is not mapped,如何解決?
    • ¥15 c++头文件不能识别CDialog
    • ¥15 Excel发现不可读取的内容