Як відключити автоматичне фокусування на полях введення в Chrome?


1

Чи можна взагалі зробити так, щоб Chrome не фокусувався на будь-якому з полів автоматично, наприклад, після завантаження сторінки?

Розширення, які використовують клавіші на клавіатурі, не працюють добре з автоматичним фокусуванням та вводять замість виконання команд.

Відповіді:


6

Я тільки що написав сценарій для вас:

// ==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 (URI призначений chrome://extensions/для Chrome v31)

  3. Перетягніть скрипт із провідника файлів та перенесіть його на сторінку розширень.

  4. Підтвердьте встановлення

Встановлення (TamperMonkey)

Мій сценарій повинен працювати з TamperMonkey відповідно до коментаря ОП нижче. Будь ласка, ознайомтеся з посібником користувача TamperMonkey для отримання додаткової інформації про те, як встановити мій сценарій.


Він чудово працює і з TamperMonkey. Дуже дякую та з Новим роком!
Антон Тарасенко

Ласкаво просимо! З новим роком теж :)
ComFreek

Чи можна було б налаштувати цей скрипт для фокусування адресного рядка через superuser.com/questions/1036326/override-focus-events-in-my-browser/1036330?noredirect=1#comment1447268_1036330?
Wolfpack'08

@ Wolfpack'08 Ви маєте на увазі адресний рядок браузера? AFAIK це неможливо в межах сценарію користувача.
ComFreek

1
Я спробував багато рішень, і ваше єдине, яке взаємодіє з моїми сторінками. Поставив +1. Я змінив інтервал до 500 мс, оскільки 3000 мс було занадто довгим, наскільки швидко натискаю на речі, коли завантажується сторінка.
Shadoninja

0

Невеликий риф на відмінне рішення 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;
});
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.