firefox add-on shortcut does not work anymore

2019-06-01 00:50发布

问题:

I have used following commands in my browser.xul to set a shortcut for my addon.

<keyset id="mainKeyset">
  <key id="key_convert"
       modifiers="accel"
       keycode="VK_F12"
       oncommand="myfunction()" />"
</keyset>

It used to work for previous versions of Firefox, but not anymore for newer versions. has anything changed in the syntax?

Thanks

回答1:

That code example looks correct, I suspect that there is some code within myfunction() that is failing, so we need more information probably. Try to replace myfunction() with alert("test"), that should work.



回答2:

Some notes:

  • You must add it to a keyset, as the key listeners are attached when keyset is added
    • source: http://forums.mozillazine.org/viewtopic.php?f=19&t=2711165&p=12885299&hilit=mainKeyset#p12885299
  • You must set an oncommand attribute
    • source: How to set an XUL key dynamically and securely?

Can copy paste this to scratchpad:

var keyset = document.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'keyset'); //http://forums.mozillazine.org/viewtopic.php?f=19&t=2711165&p=12885299&hilit=mainKeyset#p12885299
//cant use mainKeyset see topic above
var key = document.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'key');
var props = {
  id: 'key_convert',
  modifiers: 'accel',
  keycode: 'VK_F12',
  oncommand: 'alert("tirggered")'
};
for (var p in props) {
  key.setAttribute(p, props[p]);
}
keyset.appendChild(key);
Services.wm.getMostRecentWindow('navigator:browser').document.documentElement.appendChild(keyset);