Cra*_*ney 2 javascript html5 undo-redo
我有一个交互式的html5画布,有时用户会想要撤消他们的动作.我有实现的逻辑,但我不确定如何正确捕获"用户想要撤消"事件.
目前,我只是听键盘事件并将"CTRL + Z"解释为请求撤消,如下所示:
document.addEventListener("keydown", e => {
const Z_KEY = 90;
let isUndo = e.keyCode == Z_KEY && e.ctrlKey && !e.shiftKey;
if (isUndo) {
restore(revision.undo());
}
});
Run Code Online (Sandbox Code Playgroud)
问题在于撤消的标准快捷方式因操作系统而异,并且有完全正交的触发方式(例如摇动手机).
我想要的是以某种方式告诉浏览器我支持撤消,并且它应该将所有疯狂的特定于操作系统的触发撤销方式转发给我指定的方法.事实上,浏览器不知道用户正在做任何涉及撤消的事情.所有浏览器都看到是一个被点击并绘制的画布.
有没有一种标准方法可以让浏览器为我捕获所有撤消事件?在面向未来的方式中,即使供应商发明了新的撤消操作,它也能继续工作?什么是hacky解决方法?或者也许有一个图书馆,其重点是解决这个特殊问题?
笔记: