2011-02-01 29 views
1

我正在構建Mozilla擴展,並且需要使用sendKeyEvent函數發送窗口按鍵。當我向窗口發送一個單擊按鍵時它有效,但當我嘗試發送多按鍵模式時(例如,SHIFT + 3發送#字符)它不起作用。有沒有人有任何想法如何發送多個鍵到窗口?我曾嘗試下面的代碼,但它似乎並不奏效:在Mozilla/Firefox擴展中使用sendKeyEvent發送組合鍵擊

var utils = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor).getInterface(Components.interfaces.nsIDOMWindowUtils); 
utils.sendKeyEvent("keydown", 51, 51, 4); 
utils.sendKeyEvent("keypress", 51, 51, 4); 
utils.sendKeyEvent("keyup", 51, 51, 4); 

我研究了網絡,但我無法找到多鍵組合的任何實例。

更新::確定,所以我問這個問題的原因是因爲我正在建立一個自定義FF擴展,將與網站互動。在網站上他們有一些快捷鍵,在擴展中,我想觸發一些快捷鍵。一個這樣的捷徑是SHIFT + 3(#英鎊符號)。於是就相信網站,他們有類似以下內容:

function key_event(evt) 
{ 
    if(evt.keyCode == 16) { 
     if(evt.keyCode == 51){ 
      FIRE EVENT 
     } 
    } 
} 

現在,沒有人知道我是如何引發的JavaScript這種情況下,因爲sendKeyEvent似乎沒有觸發它?我最初的想法是創建一個按住SHIFT鍵並設置間隔按下3鍵的while循環。在某個時候,他們必須同時被觸發?不知道這是否是最好的方式。任何指導/想法將不勝感激!

謝謝你的時間。

+0

對於井號( 「#字符」),你有沒有嘗試發送它的ASCII碼?也就是說,使用** 35 **而不是51.? – 2011-02-02 06:48:34

回答

1

對於Octothorpe(「#字符」),請嘗試發送其ASCII碼。也就是說,使用的35,而不是51

喜歡的東西:

utils.sendKeyEvent("keypress", 35, 35, 4);