1

我可以使用 websocket 跨浏览器模拟键盘吗?我正在寻找模拟箭头键和 F11。

4

2 回答 2

4

多年来,关键事件已在浏览器中可用

有关支持列表,请参阅 http://www.quirksmode.org/dom/events/keys.html

并在此处使用 jQuery 中的按键事件 是否可以以编程方式模拟按键事件?

Websockets 是较新的技术,并非在所有浏览器中都可用,但如果需要,您可以在 Socket.io 等旧浏览器上使用模拟 Web 套接字的库来进行双向实时消息传递。

http://socket.io/

客户端上的伪代码如下所示:

(function ($) {
    function simulateKeyPress(character) {
      jQuery.event.trigger({ type : 'keypress', which : character.charCodeAt(0) });
    }

    function onkeypress(key, ts) {
       var act = {"timestamp" : ts, "key" : key};
       socketIoClient.emit("message", act);
    }

    $('body').keypress(function(e) {
       // Send date in case you want to order/buffer on the server
      onkeypress(e.which, new Date());
    });

    var socketIoClient = io.connect(null, {
       'port': '#socketIoPort#'
        , 'rememberTransport': true
        , 'transports': ['websocket', 'xhr-polling'] // put here all the transports you need
    });

    // Handle the key press events
    socketIoClient.on('message', function(json) {
      var act = JSON.parse(json);
      if (act) {
      // Not sure what the keys will do but if you just want to echo them
       simulateKeyPress(act.key);
     }
    });
})(jQuery);

希望这可以帮助

于 2012-08-23T19:21:31.237 回答
0

当然可以!

  1. 打开到 Websocket 服务器的连接并在每个 jQuery keyUp-Event 上向它发送请求!
  2. 在 websocket 端,只需将 Event throw 传递给您的其他浏览器连接。
  3. 在另一个浏览器上只模拟 KeyPresssimulateKeyPress(e);
于 2012-08-27T10:55:17.637 回答