我可以使用 websocket 跨浏览器模拟键盘吗?我正在寻找模拟箭头键和 F11。
问问题
1949 次
2 回答
4
多年来,关键事件已在浏览器中可用
有关支持列表,请参阅 http://www.quirksmode.org/dom/events/keys.html
并在此处使用 jQuery 中的按键事件 是否可以以编程方式模拟按键事件?
Websockets 是较新的技术,并非在所有浏览器中都可用,但如果需要,您可以在 Socket.io 等旧浏览器上使用模拟 Web 套接字的库来进行双向实时消息传递。
客户端上的伪代码如下所示:
(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
当然可以!
- 打开到 Websocket 服务器的连接并在每个 jQuery keyUp-Event 上向它发送请求!
- 在 websocket 端,只需将 Event throw 传递给您的其他浏览器连接。
- 在另一个浏览器上只模拟 KeyPress
simulateKeyPress(e);
于 2012-08-27T10:55:17.637 回答