Я пытаюсь написать пользовательский скрипт для переопределения сочетаний клавиш в веб-приложении.Используя инспектор Chrome DOM, я обнаружил, что обработчик ключа определяется как прослушиватель события keydown для объекта документа на этапе захвата.Как я понимаю модель события, любые прослушиватели фазы захвата на объекте документа будут выполняться раньше всех остальных, поэтому единственный способ запустить собственный прослушиватель до запуска по умолчанию - это установить его до инициализации веб-приложения.
Поэтому я написал скрипт пользователя с @run-at document-start
для запуска
document.addEventListener("keydown", function(e){
alert("foo");
e.stopPropagation();
e.stopImmediatePropagation();
}, true);
до того, как webapp установит свои собственные обработчики.По словам инспектора DOM, мой обработчик действительно первый, и действительно, когда я нажимаю клавишу в определенных частях страницы, я получаю предупреждение.Но в редакторе форматированного текста, который я пытаюсь «исправить», предупреждение полностью отсутствует.
Я также попытался добавить свою собственную замену Node.prototype.addEventHandler
, чтобы перехватить вызов, который регистрирует обработчик-нарушитель, но, похоже,это закрытие не подходит для него (или есть другие проблемы с синхронизацией), поскольку к моменту загрузки страницы она возвращается к собственной функции, а не к моей замене.И нативный addEventHandler
, по-видимому, делает невозможным проверку обработчиков, поэтому, насколько я могу судить, я никак не могу получить доступ к обработчику веб-приложения, чтобы изменить или удалить его.
Так что теперь яне хватает идей - как кто-то еще может поменять этот обработчик ключей?