1

ショートカットキーでアクティブ化できる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 が適切な文字列に設定され、key が使用したいキーに設定されていることを確認できます。

これを希望どおりに実現するにはどうすればよいですか?

4

1 に答える 1

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

これが完了すると、新しいキー コンボが有効になります。

于 2009-02-16T15:09:43.100 に答える