Ctrl-Z/Y 使浏览器专注于最近更改的输入

Posted

技术标签:

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

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

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

我正在使用 Chrome。

【问题讨论】:

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

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

【讨论】:

【参考方案2】:

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

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

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

【讨论】:

以上是关于Ctrl-Z/Y 使浏览器专注于最近更改的输入的主要内容,如果未能解决你的问题,请参考以下文章

手动触发专注于输入 Iphone 问题

jQuery:如何专注于输入文本字段,使光标位于文本的末尾?

更改编辑模式Vue.js + Typescript后如何专注于输入字段

专注于条件渲染反应组件中的输入文本

PHP 文件不会在浏览器中打开 - 只能下载。我需要进行哪些更改才能使其正常工作?

Visual Studio:向上/向下移动行和浏览最近更改的热键