Отменить страницу вперед / назад горячие клавиши в Firefox с Greasemonkey - PullRequest
3 голосов
/ 30 мая 2010

Первый фон:

В Firefox 3.6.3 в Mac OS X 10.5.8 при вводе текста в стандартную комбинацию горячих клавиш Command + LeftArrow и Command + RightArrow перемещают курсор к началу / концу текущей строки соответственно. Однако при использовании CKEditor, FCKEditor и YUI Editor Firefox, похоже, не полностью распознает, что это текстовая область. Вместо этого он возвращается к функции по умолчанию для тех горячих клавиш, которая заключается в перемещении назад / вперед в истории браузера. После того, как это происходит, текст в редакторе также очищается при возврате на страницу, что позволяет очень легко потерять все, над чем работали.

Я пытаюсь написать скрипт greasemonkey, который я могу использовать для захвата событий и предотвращения выполнения переходов вперед / назад страницы. До сих пор я мог видеть события со следующим, используемым в качестве сценария .user.js в GreaseMonkey:

document.addEventListener('keypress', function (evt) {
// grab the meta key
var isCmd = evt.metaKey;

// check to see if it is pressed
if(isCmd)
{
  // if so, grab the key code;
  var kCode = evt.keyCode;

  if(kCode == 37 || kCode == 39)
  {
    alert(kCode);
  }
}

}, ложный );

Когда установлено / включено, нажатие клавиши + стрелка влево | вправо выдает предупреждение с соответствующим кодом, но как только диалоговое окно закрывается, браузер выполняет перемещение страницы вперед / назад. Я попытался установить новый код с evt.keyCode = 0, но это не сработало.

Итак, вопрос в том, может ли этот скрипт Greasemonkey быть обновлен так, чтобы он препятствовал перемещению страниц назад / вперед?

(ПРИМЕЧАНИЕ: я открыт и для других решений. Не обязательно быть Greasemonkey, это просто направление, которое я попробовал. Настоящая цель - отключить функциональные клавиши «вперед / назад».)

1 Ответ

2 голосов
/ 30 мая 2010

Добавить return false; после alert(kCode); Это должно делать это большую часть времени.

Может также добавить:

evt.preventDefault();
and/or
evt.stopPropagation();

Эти две функции работают в большинстве версий FF, но я не уверен насчет Mac. Также, как правило, ваша функция будет запускаться после сценария редактора. Но, если он срабатывает раньше, он может отключить этот прыжок курсора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...