在JavaScript中实现撤销功能

7

如何在javascript中实现ctrl z(撤销)功能?

在多次谷歌搜索后,我偶然发现了execCommand函数:

我尝试使用document.execCommand("undo", false, null)来实现撤销操作,但是在Firefox浏览器中无法正常工作。

虽然在Firefox中第二个和第三个参数是可选的,但我还是填写了这两个参数。

是否有任何想法、见解、建议、示例等可以分享?


2
我不能确定,但如果你想跨浏览器使用本地的“撤消”功能,我会非常惊讶,因为它们可能都不会给你这个选项。你可能需要创建自己的事件“堆栈”并自己复制“撤消”。 - Zach Lysobey
你可以描述一下你的使用场景吗? - Halcyon
1
检查这个答案。原始问题是针对jQuery的,但它用纯JavaScript回答,并抓住了你想要实现的内容;https://dev59.com/pGLVa4cB1Zd3GeqPtyxB - user1467267
@ZachL 我非常确定这就是 jsFiddle 所做的! - Ian
1
我已经在“撤销”命令之前添加了焦点功能。 - Marshall Zwick
我已经在“撤销”命令之前加入了焦点特性。无论如何,它都没有任何影响。我仍然遇到同样的奇怪问题。哦,我使用的是Safari而不是Firefox(我的错)。我尝试了各种不同的组合,但没有任何效果。 - Marshall Zwick
1个回答

0

由于这个问题还没有得到官方回答,如果这有所帮助,我写了以下内容:

它扩展了jQuery,以便检测ctrl + z。可以像这样使用:

$('input').disableUndo();

或者如果您希望在用户尝试撤消操作时执行某些操作

$('input').disableUndo(function(element){
    // do custom stuff   
});

jsFiddle演示


1
OP想要实现撤销而不是禁用它。但还是感谢这段代码。 :) - Mr_Green

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接