您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Band Aid fix for ChatGpt not having placeholder text and a caret in the question box.
// ==UserScript== // @name Fix ChatGPT Placeholder / Caret // @match https://chatgpt.com/* // @grant none // @license MIT // @version 1.0.1 // @description Band Aid fix for ChatGpt not having placeholder text and a caret in the question box. // @namespace https://greasyfork.org/users/1495774 // ==/UserScript== (function() { 'use strict'; function applyStyles(pm) { pm.style.all = 'unset'; pm.style.caretColor = 'white'; pm.style.padding = '0px 0px 0px 0px'; pm.style.margin = '0px 0px 0px 1px'; pm.style.fontSize = '16px'; pm.style.lineHeight = '1.2'; pm.style.minHeight = '2em'; pm.style.height = 'auto'; pm.style.boxSizing = 'border-box'; pm.style.overflow = 'hidden'; pm.style.setProperty('--text-secondary', 'rgba(255, 255, 255, 0.6)'); pm.setAttribute('contenteditable', 'true'); pm.focus(); } function fixProseMirror() { const pm = document.querySelector('.ProseMirror'); if (pm) applyStyles(pm); else observeForProseMirror(); } let proseObserver; function observeForProseMirror() { if (proseObserver) proseObserver.disconnect(); proseObserver = new MutationObserver((mutations, obs) => { const pm = document.querySelector('.ProseMirror'); if (pm) { applyStyles(pm); obs.disconnect(); } }); proseObserver.observe(document.body, { childList: true, subtree: true }); } // === Hook into SPA navigation === let lastUrl = location.href; const observeUrlChange = () => { const checkUrl = () => { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(fixProseMirror, 200); // Give the DOM time to update } }; // Monkey-patch pushState & replaceState const origPushState = history.pushState; history.pushState = function(...args) { origPushState.apply(this, args); checkUrl(); }; const origReplaceState = history.replaceState; history.replaceState = function(...args) { origReplaceState.apply(this, args); checkUrl(); }; window.addEventListener('popstate', checkUrl); }; // Start everything fixProseMirror(); observeUrlChange(); })();