Middle Text Ellipsis for ChatGPT

Adds a button to trim the middle part of text inside `.text-message` elements on chatgpt.com.

目前為 2024-09-10 提交的版本,檢視 最新版本

// ==UserScript==
// @name         Middle Text Ellipsis for ChatGPT
// @namespace    http://yournamespace.example.com
// @version      1.0.4
// @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(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, 10, 10);
            });
        });
        alert("Trim applied to the last fifth of text-message elements!"); // Notify when trim is applied
    };

    // Create and inject a button to trigger the trimming function
    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);

        // Append the button to the document
        const targetElement = document.getElementById("prompt-textarea");
        if (targetElement) {
            targetElement.appendChild(button);
        }
    };

    // Wait for the page to load and then create the button
    window.addEventListener('load', createButton);

})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址