在 Chrome 27 中,覆盖 Chrome 新标签页的扩展程序似乎无法像以前版本的 Chrome 那样将焦点从 Chrome 的多功能框上移开。
是否有一种新方法可以在新标签页中聚焦输入框,或者此功能是否已完全禁用? :(
要对此进行测试,请创建一个包含三个文件的扩展文件夹:
<强>1。 list .json:
{
"name": "Focus Test",
"version": "0",
"minimum_chrome_version": "27",
"chrome_url_overrides": {
"newtab": "newTab.html"
},
"manifest_version": 2
}
<强>2。焦点.js:
document.getElementById('foo').focus();
<强>3。 newTab.html:
<html>
<body>
<input id="foo" type="text" />
<script type="text/javascript" src="focus.js"></script>
</body>
</html>
然后,当您加载扩展程序并打开新标签页时,输入字段不会聚焦在新标签页上。
我也曾尝试将 autofocus
属性添加到 input
字段,但也没有成功。该扩展程序的新标签页无法将焦点从 Chrome 的多功能框上移开。
有什么想法吗?这是错误还是新“功能”?
最佳答案
ManifestV3更新
此答案改编自https://stackoverflow.com/a/11348302/1754517 .
这已经通过 Manifest V2 和 V3 进行了测试。
在 Google Chrome 99.0.4844.51 64 位 (Windows 10) 中测试。
- 替换
focus.js
的内容与:
if (location.search !== "?x") {
location.search = "?x";
throw new Error; // load everything on the next page;
// stop execution on this page
}
- 添加
autofocus
属性为<input>
. - 转到 Chrome 中的“扩展程序”页面并点击
Load unpacked
按钮。选择您的扩展程序的文件夹。 - 打开新标签页。您可能会看到模式对话阅读
Change back to Google?
.点击Keep it
保留您的自定义新标签页。
内联 Javascript - 仅限 Manifest V2
如果您要在 HTML 文件中内联 Javascript,则需要采取一些额外的步骤:
- 将内联 Javascript 添加到 HTML 文件后,打开 DevTools(
F12
键)并观察控制台中的错误输出。您应该看到的示例输出:
Refused to execute inline script because it violates the following Content Security Policy directive: "script-src 'self' blob: filesystem:".
Either the 'unsafe-inline' keyword, a hash ('sha256-MK0Gypb4mkZTI11eCOtWT+mGYcJNpN5zccvhfeaRb6E='), or a nonce ('nonce-...') is required to enable inline execution.
- 选择并复制此散列。
- 添加一行到
manifest.json
允许 JS 运行,粘贴您刚刚在单引号之间复制的散列。例如:
"content_security_policy": "script-src 'self' 'sha256-MK0Gypb4mkZTI11eCOtWT+mGYcJNpN5zccvhfeaRb6E='"
- 再次转到“扩展程序”页面。删除扩展,然后使用
Load unpacked
重新添加它按钮。 - 打开新标签页。您的扩展程序现在应该自动聚焦于
<input>
.
注意内联仅适用于 Manifest V2; Manifest V3 在尝试加载扩展时返回失败消息(即使在 "content_security_policy"
中使用格式正确的 manifest.json
对象,以替换 Manifest V2 "content_security_policy"
字符串):
Failed to load extension
File C:\path\to\extension
Error 'content_security_policy.extension_pages': Insecure CSP value "'sha256-...'" in directive 'script-src'.
Could not load manifest.
关于javascript - Chrome 新标签页扩展从地址栏窃取焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16684663/