您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Firefox workaround for ChatGPT's buggy code that prevents text copy/cut while editing past chat messages
// ==UserScript== // @name Firefox/ChatGPT: Fix Copy While Editing // @namespace https://greasyfork.org/en/users/1337417-mevanlc // @version 0.1 // @description Firefox workaround for ChatGPT's buggy code that prevents text copy/cut while editing past chat messages // @author You // @match https://chatgpt.com/* // @grant none // @run-at document-start // @license Unlicense // ==/UserScript== (() => { 'use strict'; const logPrefix = "userscript: Firefox/ChatGPT: Fix Copy While Editing:"; const originalAddEventListener = EventTarget.prototype.addEventListener; EventTarget.prototype.addEventListener = function(type, listener, options) { // console.log("userscript addEventListener override called; type:", type, " listener:", listener, " options:", options); if (type === "copy" || type === "cut") { const listenerWrapper = (event) => { const isEditingChatMsg = event.target && event.target.tagName === "TEXTAREA" && event.target.closest('article'); if (isEditingChatMsg) { console.log(`${logPrefix} isEditingChatMsg==true: allowing default browser behavior.`); } else { console.log(`${logPrefix} isEditingChatMsg==false: invoking ChatGPT's built-in copy/cut handler.`); listener.call(this, event); } }; // only wrap 'copy' and 'cut' events originalAddEventListener.call(this, type, listenerWrapper, options); } else { // no custom behavior for events other than 'copy' and 'cut' originalAddEventListener.call(this, type, listener, options); } }; })();