我正在创建一个地图编辑的Web应用程序,可以创建和编辑折线、多边形等。我在网上找关于撤销实现的信息时遇到了一些困难,我发现了有些人在抱怨“我们需要撤销”和“这是使用闭包的Command模式”,但我认为在完整的撤销/重做界面之间还有很长的路要走。
所以,这是我的问题(我认为是维基百科的好候选人):
- 我应该管理堆栈,还是有一种方法将我的命令发送到浏览器的堆栈中?(如果是这样,在这种情况下如何处理文本字段中的文本编辑等原生命令)
- 当一些命令是浏览器本地命令时,如何处理“命令压缩”(命令分组)
- 如何检测撤销(ctrl+z)按键?
- 如果我注册一个keyup事件,如何决定是否阻止默认行为?
- 如果不行,我能否在某个地方注册一些undo事件处理程序?
- 用户在Web上不习惯撤销操作,我该如何“培训”他们在我的应用程序中探索/撤销操作?