Jquery 撤消/重做事件绑定
我发现了一些有趣的javascript撤销管理器,当然,我们有一个最终将在浏览器中使用HTML5实现的撤销管理器 现在,我不确定的是,如何捕获用户操作,以便使用jQuery触发“撤销”,从而驱动UndoManager:Jquery 撤消/重做事件绑定,jquery,html,Jquery,Html,我发现了一些有趣的javascript撤销管理器,当然,我们有一个最终将在浏览器中使用HTML5实现的撤销管理器 现在,我不确定的是,如何捕获用户操作,以便使用jQuery触发“撤销”,从而驱动UndoManager: Ctrl+Z,Ctrl+Shift+Z Cmd+Z,Cmd+Shift+Z 用户在浏览器中单击“编辑>撤消”或“编辑>重做”菜单 我的第一个尝试是: function keypress(e){ if (e.metaKey) { Collage.console(e)
- Ctrl+Z,Ctrl+Shift+Z
- Cmd+Z,Cmd+Shift+Z
- 用户在浏览器中单击“编辑>撤消”或“编辑>重做”菜单
function keypress(e){
if (e.metaKey) {
Collage.console(e);
switch(e.keyCode){
case 122: // Mac
if (e.shiftKey) {
undoManager.redo(e);
} else {
undoManager.undo(e);
}
case 26: // PC
if (e.shiftKey) {
undoManager.redo(e);
} else {
undoManager.undo(e);
}
}
}
};
$('#my-thing-with-undos').bind('keypress', keypress);
但是如何确保(现代)浏览器的“编辑”菜单与程序保持同步
我真的不希望浏览器试图找出在该区域中撤消什么以及如何撤消,或者至少不对其执行编辑(这是一个
contenteditable=true
区域)。我认为您无法触发默认浏览器事件
记住,使用数组
存储特定时间的任何击键。e、 g
如果我在一秒钟内键入“hello world”,或者如果我继续键入,请继续记录字符。当用户停止输入超过一秒钟,然后将其推送到数组中,这样您就可以更好地控制更改
另一件事是,这是一种不好的感觉。但我确信26和122并不代表ctrl+z,很可能是代表z-it本身或控件。
if(e.metaKey)
第2行应该确保控件或命令处于关闭状态。除非您在某个地方阻止浏览器的默认行为,否则这不起作用。