2009-02-14 52 views
1

我有一個可以通過快捷鍵激活的Firefox擴展。我希望用戶能夠動態更改組合鍵。如何在Firefox中動態更改快捷鍵?

我的XUL看起來像這樣

<keyset id="ksMain"> 
    <key id="keyDoMyThing" modifiers="control,shift" key="e" command="cmdDoMyThing"/> 
</keyset> 

cmdDoMyThing是一個命令集的元素的引用。當我按下ctrl + shift + e時,該命令觸發。

我試圖修改現有的元素,並使用JavaScript創建一個新的元素,但雖然我可以得到舊的組合鍵停止工作,我不能得到新的發生。下面是我使用

keyelem = document.createElement('key'); 
keyelem.setAttribute('id', 'keyDoMyThing'); 
keyelem.setAttribute('command', 'cmdDoMyThing'); 
keyelem.setAttribute('key', key); 
keyelem.setAttribute('modifiers', modstr); 
keyset.appendChild(keyelem); 

我可以使用調試器來驗證modstr設置爲正確的琴絃和鍵設置爲我想要使用的鍵碼的一個例子。

如何以我想要的方式使這種情況發生?

回答

1

原來我需要刪除鍵集,並創建一個全新的鍵集。

ksparent = keyset.parentNode 
ksparent.removeChild(keyset); 

keyset = document.createElement('keyset'); 
keyset.id = 'my-keyset'; 

keyelem = document.createElement('key'); 
keyelem.setAttribute('id', 'keyDoMyThing'); 
keyelem.setAttribute('command', 'cmdDoMyThing'); 
keyelem.setAttribute('key', key); 
keyelem.setAttribute('modifiers', modstr); 

keyset.appendChild(keyelem); 
ksparent.appendChild(keyset); 

一旦完成,新的組合鍵將生效。

+0

你提到了一個'調試器'。它是螢火蟲你使用,還是別的? – montrealist 2009-02-16 15:17:24

相關問題