【问题标题】:Ctrl-Z/Y makes the browser focus on a recently changed inputCtrl-Z/Y 使浏览器专注于最近更改的输入
【发布时间】:2019-11-01 23:13:17
【问题描述】:

我有一个画布 Web 应用程序,我可以通过按 Ctrl+Z 来撤消操作 该应用程序还具有文本输入元素

在某些情况下,当我按下 Ctrl+Z 时,浏览器会自动关注最近更改的输入。有谁知道如何防止这种情况?

我正在使用 Chrome。

【问题讨论】:

  • 明确一点,你想仍然执行撤消/重做操作但不改变焦点?如果是这样,我不相信这是可能的。编辑的字段重新获得焦点是操作系统行为的一部分。
  • 嗯,我害怕那个。还是谢谢
  • 你可以拦截document.onkeydownreturn false来禁用浏览器的control-z。可能依赖于浏览器,但在 Chrome 中对我来说效果很好。小提琴示例(从上面的副本中调整):jsfiddle.net/btm8qkxL

标签: javascript jquery


【解决方案1】:

我也遇到了同样的问题,不过有趣的是只在 Windows 上。在事件中调用 preventDefault() 为我解决了问题。

【讨论】:

    【解决方案2】:

    关于 Oak 的回答,就我而言,我不能只是 preventDefault() 每次按键,因为我们需要击键,所以这对我有用:

     keyHandler = (e: KeyboardEvent) => {
       switch (e.key) {
        case e.ctrlKey && 'z': {
          e.preventDefault();
          break;
        }
    }
    

    奇怪的是onBlur 不会阻止这种情况的发生,但是如果用户手动单击输入,那么 CTRL + Z 自动不会调用输入...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-16
      • 2017-02-09
      • 2017-10-01
      • 2019-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多