您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Add a 'Copy Code' button to the bottom right hand of code blocks on chat.openai.com
当前为
// ==UserScript== // @name OpenAI Chat Copy Code Button // @namespace http://tampermonkey.net/ // @version 0.1 // @description Add a 'Copy Code' button to the bottom right hand of code blocks on chat.openai.com // @author Your Name // @match https://chat.openai.com/* // @grant none // @license MIT // ==/UserScript== (function () { 'use strict'; const copyToClipboard = (text) => { navigator.clipboard.writeText(text).then(() => { console.log('Copied code to clipboard'); }, (err) => { console.error('Failed to copy code: ', err); }); }; const addButton = (elem) => { const button = document.createElement('button'); button.innerHTML = '📋 Copy Code'; button.style.position = 'absolute'; button.style.bottom = '8px'; button.style.right = '8px'; button.style.fontSize = '12px'; button.style.padding = '4px 8px'; button.style.border = '1px solid #ccc'; button.style.borderRadius = '3px'; button.style.background = 'rgba(0,0,0,0.1)'; button.style.color = 'white'; button.style.cursor = 'pointer'; button.style.zIndex = '10'; button.addEventListener('click', (e) => { e.stopPropagation(); copyToClipboard(elem.querySelector('code').textContent); }); elem.style.position = 'relative'; elem.appendChild(button); }; const observeCodeBlocks = () => { const codeBlocks = document.querySelectorAll('pre:not(.copy-code-processed)'); if (codeBlocks.length) { codeBlocks.forEach(block => { addButton(block); block.classList.add('copy-code-processed'); }); } }; const observer = new MutationObserver(observeCodeBlocks); observer.observe(document.body, { childList: true, subtree: true }); observeCodeBlocks(); })();