Mozilla 도움말 검색

고객 지원 사기를 피하세요. 저희는 여러분께 절대로 전화를 걸거나 문자를 보내거나 개인 정보를 공유하도록 요청하지 않습니다. "악용 사례 신고"옵션을 사용하여 의심스러운 활동을 신고해 주세요.

Learn More

[Update] Allow web page to override a keyboard shortcut

  • 3 답장
  • 0 이 문제를 만남
  • 1 보기
  • 최종 답변자: jonschz

more options

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

```

The excellent answer [[How to allow web page to override a keyboard shortcut|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(); } ```

선택된 해결법

That is this question:

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;

문맥에 따라 이 답변을 읽어주세요 👍 1

모든 댓글 (3)

more options

Hi

To help us understand this better, please can you share a link to the archived question that you had found.

more options

선택된 해결법

That is this question:

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;

more options

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.