9

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

Chrome 27:新标签页扩展无法从多功能框中窃取焦点

它指出 Chrome 现在已经做到了,因此您无法将多功能框的焦点转移到新的标签页上。鉴于 Chrome 可以将焦点放在任何不是新标签页的网站上,我一直在尝试想出解决方法,但没有什么是真正令人满意的。

我试过了:

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

  • 在内容脚本中覆盖 ctrl+t 和 cmd+t 以打开一个新选项卡,其中包含本地存储的 HTML 文件的内容。这很好用,只是您似乎无法覆盖 cmd+t,因此 Mac 用户将被迫使用 ctrl+t。此外,某些网站(例如 OneNote 在线编辑器)会接管 ctrl+t,因此它并非在每个页面上都有效。

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

  • 建议用户在打开新标签时按两次 tab 以专注于输入文本 :)

是否有人对您如何解决此限制有任何其他建议?这对我的扩展非常重要。

谢谢!

4

1 回答 1

12

你好,从我的问题你链接!

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

chrome.tabs.create({ url: chrome.extension.getURL("foo.html") });
window.close();

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

这就是我为Fauxbar 扩展所做的。单击 Chrome 的“新标签”按钮时会稍微延迟(就您的输入框获得焦点所需的时间而言),但我认为这比必须按 Tab 更好。

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

于 2013-07-12T13:47:44.350 回答