Prevent Autofocus on AllenAI, Mistral

Blocks programmatic focus on <textarea> and contenteditable elements

이 스크립트를 설치하려면 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         Prevent Autofocus on AllenAI, Mistral
// @description  Blocks programmatic focus on <textarea> and contenteditable elements
// @match        https://playground.allenai.org/*
// @match        https://chat.mistral.ai/*
// @match        https://www.kimi.com/*
// @run-at       document-start
// @version 0.0.1.20250715101215
// @namespace https://greasyfork.org/users/1435046
// ==/UserScript==

(function() {
    'use strict';

    // Save original focus
    const originalFocus = HTMLElement.prototype.focus;

    // Override focus globally
    Object.defineProperty(HTMLElement.prototype, 'focus', {
        configurable: true,
        enumerable:   true,
        writable:     true,
        value: function(...args) {
            // If it's a <textarea> or a contenteditable element, do nothing
            if (this.tagName === 'TEXTAREA' || this.isContentEditable) {
                return;
            }
            // Otherwise proceed as normal
            return originalFocus.apply(this, args);
        }
    });
})();