使用Greasemonkey在Firefox中取消页面前进/后退热键

时间:2010-05-30 02:03:08

标签: firefox greasemonkey hotkeys

首先是背景:

在Mac OS X 10.5.8上的Firefox 3.6.3中,当将文本输入标准时,Command + LeftArrow和Command + RightArrow的热键组合分别将光标跳转到当前行的开头/结尾。但是,当使用CKEditor,FCKEditor和YUI编辑器时,Firefox似乎并不完全认识到它是一个文本区域。相反,它会回退到那些在浏览器历史记录中后退/前进的热键的默认功能。发生这种情况后,当您返回到页面时,编辑器中的文本也会被清除,这样就可以轻松地松开正在处理的任何内容。

我正在尝试编写一个greasemonkey脚本,我可以使用它捕获事件并防止页面前进/后退跳转被执行。到目前为止,我已经能够在GreaseMonkey中看到以下用作.user.js脚本的事件:

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 个答案:

答案 0 :(得分:2)

return false;之后添加alert(kCode); 这应该在大部分时间内完成。

可能还要补充:

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

这两个功能适用于大多数FF版本,但我不确定Mac。 此外,通常,您的func将在编辑器脚本之后触发。但是,如果它之前触发,它可能会禁用光标跳转。