Как отключить / удалить горячую клавишу клавиатуры сайта на imgur.com?В частности, команда upload accent / tilde (`) - PullRequest
0 голосов
/ 18 февраля 2019

Я думал, что нашел скрипт tampermonkey, но он просто не работает.Есть ли у вас какая-то мудрость?

https://greasyfork.org/en/scripts/31704-imgur-remove-key-listener

Как отключить сочетания клавиш на веб-сайте?Я использую Push to talk Discord, и эта клавиша мешает моему просмотру страниц.

Я ищу в Google такие запросы, как "unbind website hotkeys -browser" и "script disable disable delete keykey keykey hotkey" и "disable imgur hotkey"но никаких результатов по первым 20 ссылкам.

// ==UserScript==
// @name        Imgur remove key listener
// @namespace   xxx
// @description Removes the key shortcuts on imgur
// @include     *://imgur.com/*
// @version     1
// @grant       none
// @locale       en
// ==/UserScript==

$(document).unbind('keydown').unbind('keyup');

Когда я нажимаю клавишу тильды / акцента на клавиатуре, диалог загрузки не должен появляться на веб-сайте imgur.

1 Ответ

0 голосов
/ 18 февраля 2019

Слушатели не будут добавлены синхронно, поэтому пользовательский скрипт, который выполняется синхронно, не удалит слушателей.

Альтернативой может быть добавление слушателя к window, в фаза захвата и вызов stopPropagation для события:

['keydown', 'keyup'].forEach((eventName) => {
  window.addEventListener(
    eventName,
    (e) => {
      e.stopPropagation();
    },
    true // capturing phase - very important
  );
});

Это предотвратит запуск прослушивателей, добавленных к дочерним узлам.Чтобы также предотвратить добавление слушателей в window после , когда этот слушатель был добавлен из-за запуска, вы можете вызвать e.stopImmediatePropagation().

Единственный случай, когда такой метод не будет работать, будетесли страница добавляет собственного слушателя к window до вашего пользовательского сценария.

Чтобы убедиться, что ваш скрипт выполняется максимально быстро (вы хотите, чтобы ваш собственный слушатель был подключен как можно скорее),вы можете поместить

// @run-at document-start

в блок метаданных, что может помочь, но, к сожалению, не совсем надежно.

...