我一直在为特定目的编写一种在线电子表格应用程序,并且我已经编写了自己的撤消和重做功能。当用户按下ctr-z或ctr-y时,撤消或重做对文本字段的最后更改。他们是一种使用javascript有效地劫持页面上任何地方发生的ctr-z和ctr-y按键事件并使它们运行我自己的函数的方法。或者至少禁用标准浏览器功能。
我需要在Windows上使用最新版本的firefox和chrome。
答案 0 :(得分:2)
使用jQuery:
$(document).keydown(function (keyEvent) {
var keyCode = keyEvent.keyCode;
if (keyEvent.metaKey === true || keyEvent.ctrlKey === true) {
if (keyCode === 89) {
//fire your custom redo logic
keyEvent.preventDefault();
return false;
}
else if (keyCode === 90) {
//special case (CTRL-SHIFT-Z) does a redo (on a mac for example)
if (keyEvent.shiftKey === true) {
//fire your custom redo logic
}
else {
//fire your custom undo logic
}
keyEvent.preventDefault();
return false;
}
}
});
这应该处理所有基于键盘的事件。如果用户在菜单栏中单击“撤消”或右键单击并选择“撤消”,则无法处理会发生的情况。
答案 1 :(得分:0)
你可以把你的页面隐藏起来textarea,绑定onclick鼠标事件来起作用,这会将焦点设置到textarea,绑定这个textarea的键盘事件,如果一个事件是keydown而key是z或y而modifyer是ctrl - 然后调用重做/撤消操作。