您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds a button to trim the middle part of text inside `.text-message` elements on chatgpt.com.
// ==UserScript== // @name Middle Text Ellipsis for ChatGPT // @namespace http://yournamespace.example.com // @version 1.1 // @description Adds a button to trim the middle part of text inside `.text-message` elements on chatgpt.com. // @match *://*.chatgpt.com/* // @license MIT // @locale en // ==/UserScript== (function() { 'use strict'; // Function to trim the middle of a string, keeping the first and last parts with an ellipsis in the middle const trimMiddle = (text, startChars, endChars) => { if (text.length <= startChars + endChars) return text; return `${text.slice(0, startChars)}...${text.slice(-endChars)}`; }; // Function to apply the trimming logic to all eligible `.text-message` elements const applyTrim = () => { const textMessages = document.querySelectorAll(".text-message"); // console.log("Applying trim to text messages:", textMessages); Array.from(textMessages).map((messageElement, index, allMessages) => { // Only apply the function to the last fifth of the elements if (index > allMessages.length * 0.8) return; // Traverse through specific child elements of the current '.text-message' element Array.from(messageElement.children[0].children[0]?.children).map((childElement, childIndex) => { childElement.innerHTML = trimMiddle(childElement.innerHTML, 16, 16); // Adjusted to 16 chars }); }); // alert("Trim applied to the last fifth of text-message elements!"); // Notify when trim is applied }; // Function to create and inject the button const createButton = () => { const button = document.createElement('button'); button.id = "radix-r3"; button.className = 'flex h-6 w-6 items-center justify-center rounded-full border border-token-border-light text-xs text-token-text-secondary'; button.setAttribute('aria-haspopup', 'menu'); button.setAttribute('aria-expanded', 'false'); button.setAttribute('data-state', 'closed'); button.innerHTML = '✂️'; // Icon for trimming messages // When the button is clicked, apply the trim function button.addEventListener('click', applyTrim); // Log a message when the button is created // console.log("Trim button created!"); // Find the composer-parent element and append the button to its sibling children const composerParent = document.querySelector('.composer-parent'); if (composerParent && composerParent.parentElement) { const siblings = composerParent.parentElement.children; if (siblings.length > 1) { siblings[1].appendChild(button); // Appending to the second child (sibling of composer-parent) // console.log("Trim button appended to the second sibling of composer-parent."); } else { console.error("Sibling element not found for appending the button"); } } else { console.error("Composer parent element not found or it has no parent for appending the button"); } }; // Observe DOM changes to ensure elements are fully loaded const observer = new MutationObserver(() => { const composerParent = document.querySelector('.composer-parent'); if (composerParent) { createButton(); // Create and append the button when composer-parent is found observer.disconnect(); // Stop observing after the button is appended } }); // Start observing the document body for child element changes (DOM loading) observer.observe(document.body, { childList: true, subtree: true }); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址