禁用Chrome's文本输入undo/redo (CTRL+Z / CTRL+Y)

Disable Chrome's text input undo/redo (CTRL+Z / CTRL+Y)

本文关键字:redo CTRL+Z CTRL+Y undo 输入 Chrome 文本 禁用      更新时间:2023-09-26

我目前正在开发一个web应用程序,我遇到了一个问题。你可能知道或不知道,chrome有一个功能,给<input>(特别是文本输入)一个"撤消";CTRL+Z和"redo"与CTRL+Y它可能看起来像一个很好的功能在正常的网站,但目前我正在制作一个图像编辑器,也使用这些键盘快捷键(CTRL+Z & CTRL + Y )。

在我的应用程序中,我也有一个文本输入,所以当我改变文本输入的内容,然后按CTRL+Z撤销我的图像编辑器的变化,它会撤销在文本编辑器的变化,而不是!

下面是一个演示效果的代码
(指令在代码中)

所以在结论中,我想删除撤消/重做功能在chrome我怎么能做到这一点?

你可以使用onkeydown事件和preventDefault..如:

document.onkeydown = function(e) {
  if (e.ctrlKey && e.key === 'z') {
    e.preventDefault();
    alert("CTRL + Z!");
  }
}

var ctrlDown = false;
var ctrlKey = 17, vKey = 86, cKey = 67, zKey = 90;
document.body.onkeydown = function(e) {
  if (e.keyCode == 17 || e.keyCode == 91) {
    ctrlDown = true;
  }
  if ((ctrlDown && e.keyCode == zKey) || (ctrlDown && e.keyCode == vKey) || (ctrlDown && e.keyCode == cKey)) {
    e.preventDefault();
    return false;
  }
}
document.body.onkeyup = function(e) {
  if (e.keyCode == 17 || e.keyCode == 91) {
    ctrlDown = false;
  };
};
<body>
    <input type='text' value='test' />
</body>

这个工作吗?

从这里偷来的,是@KadeHafen在这里的评论