2012-08-12 55 views
1

我可以使用websockets在瀏覽器上模擬鍵盤嗎? 我期待模擬箭頭鍵和F11。我們可以使用websockets發送遠程密鑰事件嗎?

+2

做什麼?你有什麼嘗試? – 2012-08-12 09:57:26

+0

我在我的網頁中有一個iframe。這個iframe元素,可以使用鍵盤控制Google演示文稿。但是因爲我想從遠程瀏覽器發送事件,所以我想模擬關鍵事件。謝謝 – user279244 2012-08-18 17:05:03

回答

4

關鍵事件已經在瀏覽器已經面市多年

http://www.quirksmode.org/dom/events/keys.html爲支持

列表,並與關鍵事件的jQuery這裏工作 Is it possible to simulate key press events programmatically?

的WebSockets是較新的技術,它是不適用於所有瀏覽器,但您可以使用模擬網絡套接字的庫,如果需要在舊版瀏覽器(如Socket.io)上進行雙向實時消息傳遞。

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

希望這有助於

0

當然可以的!

  1. 打開與Websocket服務器的連接,並在每個jQuery keyUp-Event上發送請求到它!
  2. 在websocket端,只需將Event throw傳遞給其他瀏覽器連接即可。
  3. 在其他瀏覽器只是模擬按鍵響應simulateKeyPress(e);
相關問題