我找到了一些有趣的javascript撤消管理器 - 当然 - 我们有一个最终将在浏览器中用HTML5实现。
现在,我不确定的是如何捕获用于触发'undo'的用户操作以使用jQuery来驱动UndoManager:
我的第一个尝试是:
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
区域)。
答案 0 :(得分:0)
我认为你不能触发默认的浏览器事件......
考虑到使用array
来存储特定时间的击键。 e.g。
如果我键入“hello world”,或者如果我继续输入,则继续记录字符。当用户停止输入超过一秒钟时,然后将其推送到一个阵列,以便您可以更好地控制更改。
另一件事是,这是一种不好的感觉。但我确定26和122不代表ctrl + z,最有可能是它自己或控件。