【问题标题】:Prevent input box from stealing focus防止输入框窃取焦点
【发布时间】:2018-08-06 13:51:18
【问题描述】:

我有一个 chrome 扩展程序,当我点击该页面上的特定图标时会显示输入。

我可以在该输入中输入一些内容,但是一旦我点击了其他地方,无论我多久再次点击该输入,我都无法将焦点返回到该输入。

发生这种情况的原因是网站本身(我无法修改)总是关注该页面上的文本区域,因此在此处输入文本。

我已经尝试过以下方法:

$(document).on('blur', '.giphySearch input', function () {
            var input=this;
            setTimeout(function() {
                input.focus();
            })
        });

但没有真正的努力(它似乎只会减慢一切;但输入仍然失去焦点)

有什么方法可以禁用所有“焦点窃取”脚本并在我的工作完成后再次打开它们?

(我知道总是从页面获得焦点的文本框类。但是我无法更改该页面上的任何内容,因为我在 chrome 扩展中)

只是为了完成: 我正在谈论的输入:

<div class="giphySearch"><input  autofocus type="text" value="huih"/></div>

【问题讨论】:

  • 你可以试试 $('.giphySearch').off() 或 $('.giphySearch input').off()。它应该摆脱所有使用 .on() 添加的事件监听器。文档:api.jquery.com/off
  • 我前几天回答了一个类似的问题,请问您看这里,告诉我这是否与您的情况相关? stackoverflow.com/questions/51690669/…
  • 您可以尝试禁用指针事件......并在重新启用它们后:pointer-events: none;

标签: javascript jquery html


【解决方案1】:

我能够通过将我的内容移动到 DOM 的另一部分来解决这个问题(确切地说:直接在 &lt;body/&gt; 下。

所以这种行为似乎是因为我的 div 的父母之一。

我认为在我的具体情况下,这是“最干净”的方式,尽管@ibowankenobi 的答案可能更通用,更适合其他人:Contenteditable Events - Jquery

【讨论】:

  • 您不应该将内容放在正文元素之外。
  • 当我写下“under”时,我指的是“child of”,而不是“below”:)
猜你喜欢
  • 2011-11-04
  • 1970-01-01
  • 1970-01-01
  • 2016-04-09
  • 1970-01-01
  • 2016-09-04
  • 1970-01-01
  • 2011-02-18
  • 1970-01-01
相关资源
最近更新 更多