通常是否可以让 Chrome 不自动关注任何字段,例如,在页面加载后?
使用键盘上的按键的扩展不能很好地与自动对焦和键入配合使用,而不是执行命令。
答案1
我刚刚为你写了脚本:
// ==UserScript==
// @name Disable auto-focussing
// @author ComFreek <comfreek at the following domain 'outlook' with the TLD 'com'>
// @description Disable auto-focussing
// @include *
// @version 1.0
// ==/UserScript==
var maxTime = 3000;
var timeoutInterval = 5;
var usedTime = 0;
var isManualFocus = false;
function check() {
if (!isManualFocus && document.activeElement.tagName.toLowerCase() == "input") {
console.log("BLURRED");
document.activeElement.blur();
}
usedTime += timeoutInterval;
if (usedTime < maxTime) {
window.setTimeout(check, timeoutInterval);
}
}
check();
document.body.addEventListener("click", function (evt) {
if (evt.target.tagName == "INPUT") {
console.log("MANUAL CLICK");
isManualFocus = true;
}
});
document.body.addEventListener("keydown", function (evt) {
isManualFocus = true;
});
警告如果用户在脚本仍在运行时立即开始输入,脚本将会干扰用户。
此问题已得到修复。
安装(手动方法)
将脚本保存为
XX.user.js
(XX 可以是任何字符串,但.user.js
在这里很重要!)在 Chrome 中打开扩展程序页面(URI
chrome://extensions/
以 Chrome v31 为准)将脚本从文件资源管理器拖放到扩展页面上。
确认安装
安装(TamperMonkey)
根据下面 OP 的评论,我的脚本应该可以与 TamperMonkey 配合使用。有关如何安装我的脚本的更多信息,请参阅 TamperMonkey 的手册。
答案2
上面 ComFreek 的出色解决方案的小小改进,当选项卡聚焦时,该解决方案也会立即从任何输入字段中移除焦点。这对于像 Google Sheets 这样的应用特别有用,当您重新聚焦选项卡时,它会自动聚焦到输入字段上。我认为这是对问题指定的原始用例(能够使用扩展键盘快捷键)的轻微改进。
var maxTime = 3000;
var timeoutInterval = 5;
var usedTime = 0;
var isManualFocus = false;
function check(force = false) {
if (force || (!isManualFocus && document.activeElement.tagName.toLowerCase() == "input")) {
console.log("BLURRED");
document.activeElement.blur();
window.blur();
}
usedTime += timeoutInterval;
if (usedTime < maxTime) {
window.setTimeout(check, timeoutInterval);
}
}
check();
document.addEventListener('visibilitychange', function(evt){
if (document.visibilityState === 'visible') {
check(true)
}
})
document.body.addEventListener("click", function (evt) {
if (evt.target.tagName == "INPUT") {
console.log("MANUAL CLICK");
isManualFocus = true;
}
});
document.body.addEventListener("keydown", function (evt) {
isManualFocus = true;
});