[Update] Allow web page to override a keyboard shortcut
The excellent answer here no longer works in Firefox 117.0 on MacOS. Unfortunately, that post is archived, so I cannot post an updated solution there. I would greatly appreciate if a moderator could add this post in the linked article, or at least link from there over to here.
For Firefox 117, the code needs to be modified slightly (two lines at the top need to be removed): ```
// 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(); }
```
Isisombululo esikhethiwe
That is this question:
- /questions/1367908 How to allow web page to override a keyboard shortcut
You need to remove/replace this line as Services.jsm is no longer supported.
const {Services} = Components.utils.import('resource://gre/modules/Services.jsm');
Use this instead:
const Services = globalThis.Services || ChromeUtils.import("resource://gre/modules/Services.jsm").Services;
- /questions/1423068 How to set focus on newtab page and not the url bar
All Replies (3)
Hi
To help us understand this better, please can you share a link to the archived question that you had found.
Isisombululo Esikhethiwe
That is this question:
- /questions/1367908 How to allow web page to override a keyboard shortcut
You need to remove/replace this line as Services.jsm is no longer supported.
const {Services} = Components.utils.import('resource://gre/modules/Services.jsm');
Use this instead:
const Services = globalThis.Services || ChromeUtils.import("resource://gre/modules/Services.jsm").Services;
- /questions/1423068 How to set focus on newtab page and not the url bar
Thank you! I indeed forgot to link the question, my bad. In my case I did not have to add your corrected line, removing it entirely worked out. I suspect there are other cases where it is needed.