使用javascript捕获ctr-z(撤消)和ctr-y(重做),并执行自定义功能
我一直在为特定目的编写一种在线电子表格应用程序,同时我还编写了自己的撤销和重做功能。当用户按下ctr-z或ctr-y时,将撤消或重做对文本字段的最后更改。是一种使用javascript有效劫持页面上任何地方发生的ctr-z和ctr-y按键事件并使它们运行我自己的函数的方法。或至少禁用标准浏览器功能使用javascript捕获ctr-z(撤消)和ctr-y(重做),并执行自定义功能,javascript,firefox,google-chrome,javascript-events,Javascript,Firefox,Google Chrome,Javascript Events,我一直在为特定目的编写一种在线电子表格应用程序,同时我还编写了自己的撤销和重做功能。当用户按下ctr-z或ctr-y时,将撤消或重做对文本字段的最后更改。是一种使用javascript有效劫持页面上任何地方发生的ctr-z和ctr-y按键事件并使它们运行我自己的函数的方法。或至少禁用标准浏览器功能 我只需要在windows上运行最新版本的firefox和chrome即可。您可以在页面上隐藏文本区域,将onclick mouse事件绑定到函数,将焦点设置为文本区域,绑定此文本区域的键盘事件,如果事
我只需要在windows上运行最新版本的firefox和chrome即可。您可以在页面上隐藏文本区域,将onclick mouse事件绑定到函数,将焦点设置为文本区域,绑定此文本区域的键盘事件,如果事件为keydown,键为z或y,modifyer为ctrl,则调用重做/撤消操作 使用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;
}
}
});
这将处理所有基于键盘的事件。如果用户单击菜单栏中的“撤消”或右键单击并选择“撤消”,则无法处理发生的情况。如何确定修改器是否为ctrl。函数isKeyPressed(event){if(event.ctrlKey==1){/“按下了CTRL键!”}。。。