Discord Kill Autofocus

Prevent chat auto focus on Discord desktop and mobile.

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

You will need to install an extension such as Tampermonkey to install this script.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

// ==UserScript==
// @name         Discord Kill Autofocus
// @description  Prevent chat auto focus on Discord desktop and mobile.
// @author C89sd
// @version      0.6
// @match        https://discord.com/*
// @namespace https://greasyfork.org/users/1376767
// @noframes
// ==/UserScript==

(function() {
    'use strict';

    let clickInTextbox = false;
    document.addEventListener('mousedown', (event) => {
        if (event.target.closest('div[role="textbox"], textarea')) {
            clickInTextbox = true;
        }
    });
    document.addEventListener('mouseup', (event) => {
        setTimeout(() => {
          clickInTextbox = false;
        }, 100);
    });

    function detectAndRemoveFocus(event) {
        const target = event.target;
        if (!clickInTextbox && target && target.matches && target.matches('div[role="textbox"], textarea')) {
            target.blur();
        } else {
          clickInTextbox = false;
        }
    }
    document.addEventListener('focus', detectAndRemoveFocus, true);
})();