如何在新标签页的Chrome扩展程序中从多功能框中窃取焦点?

Gre*_*lli 7 javascript google-chrome focus google-chrome-extension omnibox

我正在制作Chrome扩展程序,其中包括在新标签页上放置文本输入,并在加载新标签页时立即将焦点放在该输入文本上.在使用传统方法无法获得焦点后(例如focus()),我偶然发现了这个问题:

Chrome 27:新标签页扩展程序无法从Omnibox中窃取焦点

这表明Chrome现在已经做到了这一点,因此您无法将多功能框关注于新的标签页.鉴于Chrome可以将焦点放在任何不是新标签页的网站上,我一直试图提出解决方法,但没有什么是真正令人满意的.

我试过了:

  • 让新标签页立即重定向到本地存储的HTML文件,但这仍然没有给予焦点,因为页面在重定向时从未有过焦点.

  • 在内容脚本中覆盖ctrl + t和cmd + t,以打开包含本地存储的HTML文件内容的新选项卡.这工作正常,除了它似乎无法覆盖cmd + t,因此Mac用户将被迫使用ctrl + t.此外,一些网站(例如OneNote在线编辑器)接管ctrl + t,因此它不适用于每个页面.

  • 远程托管页面并将新标签页重定向到它(太慢).

  • 在打开新标签时,建议用户按两次选项卡以关注输入文本:)

有没有人对你如何解决这个限制有任何其他建议?这对我的扩展非常重要.

谢谢!

Chr*_*and 12

您好我的问题链接了!

在新标签页上,包含以下JavaScript:

chrome.tabs.create({ url: chrome.extension.getURL("foo.html") });
window.close();
Run Code Online (Sandbox Code Playgroud)

这将创建一个"普通"选项卡,然后关闭"新建标签页".然后,您可以focus()在普通选项卡上输入框.

这就是我为Fauxbar扩展所做的.单击Chrome的"新标签"按钮会增加一点延迟(就输入框聚焦所需的时间而言),但我认为它比按Tab键更好.

您还可以实现chrome.commands来创建键盘快捷键,用户可以在chrome:// extensions>键盘快捷键下自行修改.

  • 请注意,地址栏最终会显示如下:“chrome-extension://<id>/html/page.html”,它不会像以前那样为空白 (2认同)