禁用Chrome的文本输入撤消/重做(CTRL + Z / CTRL + Y)

Bin*_*iya 5 html javascript google-chrome undo textinput

我目前正在开发Web应用程序,但遇到问题。您可能不知道,chrome具有一项功能,<input>当您按下CTRL + Z并使用CTRL + Y进行“重做”时,Chrome提供了(尤其是文本输入)“撤消”功能,这在普通网站中似乎是一个不错的功能,但是目前我正在制作也使用这些键盘快捷键(CTRL + Z和CTRL + Y)的图像编辑器。

在我的应用程序中,我也有文本输入,因此当我更改文本输入的内容,然后按CTRL + Z撤消图像编辑器中的更改时,它将撤消文本编辑器中的更改!

这里是一个Codepen可以展示效果
(指令在Codepen)

所以总之,我想删除chrome中的撤消/重做功能,我该怎么做?

Kei*_*ith 6

您可以使用 onkeydown 事件和 PreventDefault .. 例如。

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


Sta*_*eta 4

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;
  };
};
Run Code Online (Sandbox Code Playgroud)
<body>
    <input type='text' value='test' />
</body>
Run Code Online (Sandbox Code Playgroud)

这有效吗?

从这里被盗,在@KadeHafen的评论中找到。