相关疑难解决方法(0)

在 contenteditable div 中收听撤消/重做事件

有没有办法监听用户可以在 contenteditable div 上触发撤消的所有方式?例如,当用户点击 Control+Z 时,右键单击 -> 撤消,或在文件菜单中编辑 -> 撤消。

我不是在寻找撤消/重​​做算法或实现,只是寻找监听事件和覆盖行为的能力。

html javascript dom contenteditable

10
推荐指数
1
解决办法
3270
查看次数

在html/javascript中请求撤消/重做事件

我有一个交互式的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解决方法?或者也许有一个图书馆,其重点是解决这个特殊问题?

笔记:

javascript html5 undo-redo

2
推荐指数
1
解决办法
1271
查看次数

标签 统计

javascript ×2

contenteditable ×1

dom ×1

html ×1

html5 ×1

undo-redo ×1