先说背景:
在 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 箭头键会弹出带有相应代码的警报,但一旦关闭对话框,浏览器就会执行页面向前/向后移动。我尝试使用 evt.keyCode = 0 设置新代码,但这不起作用。
所以,问题是,能否更新这个 Greasemonkey 脚本以防止后退/前进页面移动?
(注意:我也对其他解决方案持开放态度。不一定是 Greasemonkey,这只是我尝试过的方向。真正的目标是能够禁用前进/后退热键功能。)