您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Block all auto-focus on chatgpt.com; listen for postMessage and inject+send without stealing focus
当前为
// ==UserScript== // @name ChatGPT No-Focus Injector // @description Block all auto-focus on chatgpt.com; listen for postMessage and inject+send without stealing focus // @match https://chatgpt.com/* // @run-at document-start // @version 0.0.1.20250512161945 // @namespace https://greasyfork.org/users/1435046 // ==/UserScript== (function() { 'use strict'; // 1) Block every element’s .focus() const nativeFocus = HTMLElement.prototype.focus; HTMLElement.prototype.focus = function() { // no-op: blocks ChatGPT’s auto-focus entirely }; // 2) Grab the native setter for <textarea>.value const valueSetter = Object.getOwnPropertyDescriptor( HTMLTextAreaElement.prototype, 'value' ).set; // 3) Listen for window.postMessage("your prompt") window.addEventListener('message', event => { if (typeof event.data !== 'string') return; const text = event.data.trim(); if (!text) return; // 4) Find the hidden React <textarea> const ta = document.querySelector('textarea.text-token-text-primary'); if (!ta) return; // 5) Inject via native setter (no focus needed) valueSetter.call(ta, text); ta.dispatchEvent(new InputEvent('input', { bubbles: true })); // 6) Click Send const sendBtn = document.getElementById('composer-submit-button'); if (sendBtn && !sendBtn.disabled) { sendBtn.click(); } }); })();