How to allow web page to override a keyboard shortcut
How to allow web page to override a keyboard shortcut. Currently firefox picks up the shortcut instead of the webpage...
For example I have an webpage that detects ctrl-shift-h which worked fine in version 56 but now in version 96 it brings up a "Show All History" dialog
I an doing many such things so I looking for a generic way to override firefox keyboard shortcuts
Todas las respuestas (3)
Try to ask advice at the Firefox CSS subreddit forum.
You would have to use an autoconfig.cfg file to disable a built-in keyboard shortcut.
You can use the Browser Toolbox to find the ID of the shortcut you want to disable or override.
Solución elegida
I found a way by adding two files under the Firefox directory
- Firefox64\defaults\pref\config-prefs.js**
pref("general.config.filename", "config.js");
pref("general.config.obscure_value", 0);
pref("general.config.sandbox_enabled", false);
- Firefox64\config.js**
let { classes: Cc, interfaces: Ci, manager: Cm } = Components;
let Services = globalThis.Services || ChromeUtils.import("resource://gre/modules/Services.jsm").Services;
function ConfigJS() { Services.obs.addObserver(this, 'chrome-document-global-created', false); }
ConfigJS.prototype = {
observe: function (aSubject) { aSubject.addEventListener('DOMContentLoaded', this, {once: true}); },
handleEvent: function (aEvent) {
let document = aEvent.originalTarget; let window = document.defaultView; let location = window.location;
if (/^(chrome:(?!\/\/(global\/content\/commonDialog|browser\/content\/webext-panels)\.x?html)|about:(?!blank))/i.test(location.href)) {
if (window._gBrowser) {
let keys = ["key_find", "key_findAgain", "key_findPrevious", "key_gotoHistory", "addBookmarkAsKb", "bookmarkAllTabsKb", "showAllHistoryKb", "manBookmarkKb", "viewBookmarksToolbarKb", "key_savePage", "key_search", "key_search2", "focusURLBar", "focusURLBar2", "key_openDownloads", "openFileKb", "key_reload_skip_cache", "key_viewSource", "key_viewInfo", "key_privatebrowsing", "key_quitApplication", "context-bookmarklink"];
for (var i=0; i < keys.length; i++) {
let keyCommand = window.document.getElementById(keys[i]);
if (keyCommand != undefined) {
keyCommand.removeAttribute("command");
keyCommand.removeAttribute("key");
keyCommand.removeAttribute("modifiers");
keyCommand.removeAttribute("oncommand");
keyCommand.removeAttribute("data-l10n-id");
}
}
}
}
}
};
if (!Services.appinfo.inSafeMode) { new ConfigJS(); }
You can get a list of ids for the keys from the source by putting the following URL in your browser
view-source:chrome://browser/content/browser.xhtml
Modificadas por cor-el el
Note that in Firefox 117 and newer you need to remove this line:
const {Services} = Components.utils.import('resource://gre/modules/Services.jsm');
Add this line instead: const Services = globalThis.Services || ChromeUtils.import("resource://gre/modules/Services.jsm").Services;