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

时间:2016-10-01 01:31:16

标签: javascript html google-chrome undo textinput

我目前正在开发一个Web应用程序,但遇到了问题。 您可能知道或不知道,chrome有一个功能,可以<input>(特别是文本输入)和#34;撤消&#34;当你按下CTRL + Z和&#34;重做&#34;使用CTRL + Y,它似乎是普通网站的一个很好的功能,但目前我正在制作一个也使用这些键盘快捷键的图像编辑器(CTRL + Z&amp; CTRL + Y)。

在我的应用程序中我也有一个文本输入,所以当我更改文本输入的内容,然后点击CTRL + Z撤消我的图像编辑器中的更改时,它将取消文本编辑器中的更改而不是!

这里有一个Codepen,可以证明效果
(指令在Codepen中)

总而言之,我想删除chrome中的undo / redo函数,我该怎么做?

2 个答案:

答案 0 :(得分:3)

您可以使用onkeydown事件,并使用preventDefault ..例如。

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

答案 1 :(得分:2)

&#13;
&#13;
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;
  };
};
&#13;
<body>
    <input type='text' value='test' />
</body>
&#13;
&#13;
&#13;

这有用吗?

来自herehere被盗,enter image description here作为@KadeHafen发表评论。