Как предотвратить захват / угон клавиш с помощью веб-сайтов в Firefox?

4706
a CVn

Некоторые веб-сайты (кажется, их становится все больше) в настоящее время используют различные комбинации клавиш для выполнения действий в пределах и определяемых самим веб-сайтом. В GMail есть конкретный пример/ неуместно озаглавленного вопроса; есть поле редактирования StackExchange, которое захватывает Ctrl+ Gдля «Добавить изображение» (вместо обычного Firefox «Найти далее»); есть угон Facebook, Escчтобы скрыть оверлей, а не обычную «остановку загрузки». Я уверен, что я мог бы продолжать и продолжать с примерами, но этого должно быть достаточно, чтобы проиллюстрировать, что этот вопрос не о каком-либо конкретном веб-сайте.

Я широко использую клавиатуру, и сочетания клавиш ведут себя по-разному, в зависимости от того, на каком веб-сайте я работаю, это меня раздражает. Если я нажму определенную браузером комбинацию клавиш, я хочу, чтобы действие, определенное браузером, было выполнено, а не что-то еще. Я также не хочу, чтобы определенные функции, которые обычно доступны с клавиатуры, не были доступны с клавиатуры или внезапно переназначались на другие комбинации клавиш.

Я понимаю, что это может сделать некоторые вещи более громоздкими на некоторых сайтах, но в этом случае я предпочитаю последовательность.

Можно ли настроить Firefox, чтобы предотвращать или игнорировать такие угоны веб-сайтов и способствовать определенному поведению Firefox?

Решение, которое работает по крайней мере для версий 20, 21 и 22 Firefox в Linux и Windows, было бы идеальным решением.

Редактировать Mozilla Bugzilla Bug 380637 Должны ли веб-страницы переопределять сочетания клавиш браузера? кажется, указывает на то, что по крайней мере на это смотрят. Эта ошибка была первоначально представлена ​​в середине 2007 года и по-прежнему активна на середину 2013 года. Интересно, что ошибка 775002, позволяющая пользователям отключать javascript, чтобы перехватывать сочетания клавиш, считалась дубликатом в Firefox 15.

16
Я подозреваю, что они делают это через Javascript. В таком случае не было бы общего способа отключить его без отключения Javascript. Daniel R Hicks 10 лет назад 2
да может быть http://api.jquery.com/keypress/. Было бы интересно, если бы существовал аддон, позволяющий переписывать .js выборочно на стороне клиента. Вы можете просто закомментировать эти вызовы с помощью регулярных выражений или аналогичных James 10 лет назад 0
Даже если это делается через Javascript, где-то * должен быть задействован слушатель нажатия клавиш, и эта функциональность обеспечивается браузером *. Я не вижу причин, по которым этот код не может быть изменен так, чтобы браузер сначала интерпретировал любые нажатия клавиш (возможно, с помощью клавиш-модификаторов), и если браузер предпринимает какие-либо действия в ответ, нажатие клавиши не передается в Javascript, предоставленный страница интернета. Сделать такое поведение настраиваемым (если вы не хотите показывать его через графический интерфейс настроек, все еще есть о: config, который уже предоставляет доступ ко многим таким расширенным настройкам) должно быть довольно легко. a CVn 10 лет назад 4
@ Downvoter Почему понижающий голос? a CVn 10 лет назад 0
@Karan Этому вопросу уже целых три года, и принятый ответ говорит о Firefox ** 3.6 **. Хотя я не совсем согласен с нынешней схемой нумерации версий Firefox, с тех пор у нас, вероятно, намного больше 20 выпусков, за три года разработки. Что сказать, что ответы в нем все еще актуальны для текущих версий Firefox? a CVn 10 лет назад 1
@Karan ** Исправление ** https://bugzilla.mozilla.org/show_bug.cgi?id=380637 указывает, что оно как минимум находится в процессе разработки. a CVn 10 лет назад 0
@ MichaelKjörling: ИМО не имеет значения, сколько лет другому, твой вопрос почти точный дубликат. Если вы хотите привлечь внимание к проблеме и получить обновленные ответы, вознаградите вас этим вопросом. Вы давний участник, и поэтому мне не нужно рассказывать вам, как работает процесс вознаграждения. Karan 10 лет назад 0
Спустя 11 лет Mozilla наконец-то приняла меры по устранению ошибки, связанной с этим вопросом. К сожалению, реализация ошибочна (если вы хотите использовать клавиши `Del` или` Backspace`), но она вроде исправлена. Смотрите связанный «дубликат» вопроса; в частности, этот ответ: https://superuser.com/a/1305827/158390 Lambart 6 лет назад 0

2 ответа на вопрос

1
Sriharsha

Вы можете использовать плагин Vimperator. Направленный на то, чтобы сделать Firefox интерфейсом только для клавиатуры, он сначала слушает любое нажатие клавиши и выполняет свои собственные действия. Иногда, когда вам требуется использовать определенные угоны клавиатуры сайта, вы можете легко включить / отключить сквозной режим на некоторое время.

Давайте возьмем случай с GMail, который предлагает множество сочетаний клавиш. Но когда вы нажимаете любой такой ярлык, он обрабатывается самим Vimperator. Например, нажатие /внутри GMail обычно помещает курсор в поле поиска. Но нажатие /на странице GMail, когда Vimperator активен, запускает поиск по умолчанию (аля поиск в редакторе Vim). Тот же случай для других ярлыков GMail, как o cили даже Ctrl+Enter. Это означает, что Vimperator будет 0-м слушателем нажатий клавиш в Firefox, превосходя даже 1-го возможного слушателя, чтобы ваши сочетания клавиш были глобальными для всего браузера.

Vimperator - это, по сути, оболочка Vim поверх Firefox. Если вам удобно с Vim, Vimperator покажется вам давно потерянным другом. :-)

В любом случае, несколько сочетаний клавиш Vimperator, чтобы вы начали с:

o<link>открывает. В результате этой последовательности активируется командная строка Vimperator (внизу экрана), и команда open <link>будет размещена там, с местом для вас в середине. Нажмите, Enterчтобы загрузить страницу.

t<linkактивирует команду tabopenи открывает ссылку в новой вкладке.

gtпереключается на следующую вкладку. Ctrl+Tabа Ctrl+PgUp/Dnтакже работа.

gT переключается на предыдущие вкладки.

ZZ закрывает FF после сохранения сессии.

fпомечает все ссылки в представлении страницы выделенными цифрами. Ввод числа открывает ссылку. Все выделенные поля доступны для поиска. Таким образом, вместо ввода цифр вы можете ввести любой текст в выделенной ссылке, на которую хотите перейти.

F открывает ссылки в фоновой вкладке.

h j k lперемещаться по странице left down upиright

Vimperator предлагает множество сочетаний клавиш (и, безусловно, делает весь процесс безболезненным без мыши), и большинство сочетаний клавиш FF по умолчанию работают как обычно. Вы можете найти ярлыки, чтобы выделить текст, скопировать их, перемещаться по странице, как если бы это был текстовый документ, увеличивать / уменьшать масштаб, имитировать наведение на ссылку и просто помещать все, что заставит Firefox реагировать на мышь.

Единственное место, где это не работает, насколько я использовал, это внутри флеш-боксов, потому что FF не может добраться до того, что внутри них.

Может потребоваться немного привыкнуть, если вы не знаете о Vim или плохо знакомы с ним. Тем не менее, действительно обширная онлайн-помощь - это :h<Enter>далеко.

Вот ссылка .

по-видимому, vimperator больше не совместим с современными сборками Firefox. sylvainulg 5 лет назад 0
-1
Homer Simpsons
  • Попробуйте использовать плагин noscript для firefox, чтобы отключить некоторые JS-скрипты http://noscript.net/
NoScript позволяет загружать или не загружать весь Javascript из определенных доменов. Я уже пользуюсь им, и это прекрасно, но он пробовал использовать, например, Facebook или StackExchange без Javascript? Опыт находится где-то между довольно болезненным и совершенно непригодным для использования. Отключение всего Javascript для Facebook только для того, чтобы вернуть мой ключ Esc к обычному состоянию, довольно излишне. a CVn 10 лет назад 0
попробуйте пометить скрипт как ненадежный. Pic: http://i.stack.imgur.com/45aAv.png или используйте прокси, чтобы заблокировать любой ответ от скрипта, например. обманщик Homer Simpsons 10 лет назад 0
Если я использую NoScript, чтобы пометить, например, facebook.com как недоверенный, * no * Javascript, созданный на facebook.com, будет выполнен. Это не то, что я хочу. Пожалуйста, перечитайте вопрос. a CVn 10 лет назад 0
Получил использовать эту ссылку: https://addons.mozilla.org/sv-se/firefox/addon/greasemonkey/ и ссылку на скрипт: http://userscripts.org/scripts/show/125936 <= смотреть здесь ("если (src.search (/bad\.js/)! = -1) {") Homer Simpsons 10 лет назад 0
Я до сих пор не понимаю, как это помогает мне. Можете ли вы отредактировать его в своем ответе с более полным объяснением того, как он отвечает на вопрос? a CVn 10 лет назад 0