Gemini AI 答案折叠

Collapse/expand AI answers on Gemini interface (Top & Bottom Buttons, CSP-compatible)

// ==UserScript==
// @name         Gemini AI 答案折叠
// @namespace    http://tampermonkey.net/
// @version      0.5
// @description  Collapse/expand AI answers on Gemini interface (Top & Bottom Buttons, CSP-compatible)
// @author       OpenAI
// @match        *://gemini.google.com/*
// @grant        none
// @license MIT
// ==/UserScript==

(function () {
    'use strict';

    // Insert safe CSS using textContent
    const style = document.createElement('style');
    style.setAttribute('type', 'text/css');
    style.textContent = `
        .gemini-collapse-button {
            cursor: pointer;
            font-weight: bold;
            color: #5f6368;
            font-size: 14px;
            padding: 4px 8px;
            background-color: #f1f3f4;
            border-radius: 4px;
            margin: 6px 0;
            display: inline-block;
            user-select: none;
        }
        .gemini-answer-collapsed .gemini-collapse-button::after {
            content: " [+]";
        }
        .gemini-answer-expanded .gemini-collapse-button::after {
            content: " [-]";
        }
    `;
    document.head.appendChild(style);

    function createCollapseButton(container) {
        const btn = document.createElement('div');
        btn.className = 'gemini-collapse-button';
        btn.textContent = 'AI Answer';
        btn.addEventListener('click', () => toggleCollapse(container));
        return btn;
    }

    function toggleCollapse(container) {
        const isCollapsed = container.classList.toggle('gemini-answer-collapsed');
        container.classList.toggle('gemini-answer-expanded', !isCollapsed);

        [...container.children].forEach(child => {
            if (!child.classList.contains('gemini-collapse-button')) {
                child.style.display = isCollapsed ? 'none' : '';
            }
        });
    }

    function addCollapseToAnswer(el) {
        if (el.classList.contains('processed-by-collapser')) return;

        const markdownDiv = el.querySelector('.markdown');
        if (!markdownDiv) return;

        const topBtn = createCollapseButton(el);
        const bottomBtn = createCollapseButton(el);

        el.classList.add('gemini-answer-expanded');
        el.classList.add('processed-by-collapser');

        el.insertBefore(topBtn, markdownDiv);
        el.appendChild(bottomBtn);
    }

    function processAnswers() {
        const answers = document.querySelectorAll('message-content.model-response-text');
        answers.forEach(addCollapseToAnswer);
    }

    let throttleTimeout;
    const observer = new MutationObserver(() => {
        clearTimeout(throttleTimeout);
        throttleTimeout = setTimeout(processAnswers, 200);
    });

    observer.observe(document.body, { childList: true, subtree: true });

    window.addEventListener('load', () => {
        setTimeout(processAnswers, 1000);
    });
})();

QingJ © 2025

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