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

使用Greasemonkey取消Firefox中的页面前进/后退热键,firefox,greasemonkey,hotkeys,Firefox,Greasemonkey,Hotkeys,首先是背景: 在Mac OS X 10.5.8上的Firefox 3.6.3中,当向标准输入文本时,Command+LeftArrow和Command+RightArrow的热键组合将光标分别跳到当前行的开始/结束处。然而,当使用CKEditor、FCKEditor和YUI编辑器时,Firefox似乎并没有完全意识到它是一个文本区域。相反,它会返回到那些热键的默认功能,即在浏览器历史记录中向后/向前移动。发生这种情况后,当您返回页面时,编辑器中的文本也会被清除,从而很容易松开正在处理的内容 我正

首先是背景:

在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);
  }
}
},, 假的 );

安装/启用后,按command+left | right arrow(命令+左|右箭头)键将弹出带有相应代码的警报,但一旦关闭对话框,浏览器将执行页面向前/向后移动。我试着用evt.keyCode=0设置一个新代码,但没有成功

所以,问题是,这个Greasemonkey脚本是否可以更新,以防止向后/向前页面移动


(注意:我对其他解决方案也持开放态度。不必太油腻,这正是我尝试过的方向。真正的目标是能够禁用前进/后退热键功能。)

添加
返回false警报后<代码>警报(kCode)
大部分时间都应该这样

可能还必须添加:

evt.preventDefault();
and/or
evt.stopPropagation();
这两个函数适用于大多数FF版本,但我不确定Mac是否适用。
此外,通常情况下,func会在编辑器脚本之后启动。但是,如果它以前触发过,它可能会禁用光标跳转。

我尝试过几次,但由于某种原因,上面的整个代码片段不会保留在代码突出显示的区域中。如果复制此文件,请确保获得最后一个“},false);”part.evt.preventDefault();知道了。它确实也禁用了光标跳转,但我同意。我宁愿手动操作,也不愿冒丢失数据的风险。完整的代码是:document.addEventListener('keypress',function(evt){//grab元键var isCmd=evt.metaKey;//检查它是否被按下if(isCmd){//如果是,抓取键代码;var kCode=evt.keyCode;//如果(kCode==37 | | kCode==39),则查看它是左箭头键还是右箭头键{//如果默认值为.evt.preventDefault();}}}},则防止触发它,false);