如何禁用 Chrome 中输入字段的自动聚焦功能?

如何禁用 Chrome 中输入字段的自动聚焦功能?

通常是否可以让 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;
});

警告如果用户在脚本仍在运行时立即开始输入,脚本将会干扰用户。 此问题已得到修复。

安装(手动方法)

  1. 将脚本保存为XX.user.js(XX 可以是任何字符串,但.user.js在这里很重要!)

  2. 在 Chrome 中打开扩展程序页面(URIchrome://extensions/以 Chrome v31 为准)

  3. 将脚本从文件资源管理器拖放到扩展页面上。

  4. 确认安装

安装(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;
});

相关内容