Minimal ChatGPT Message Logger + Injector + Submitter

Listen for postMessage from parent, log to console, enter it into the chat input, and submit

当前为 2025-05-12 提交的版本,查看 最新版本

// ==UserScript==
// @name         Minimal ChatGPT Message Logger + Injector + Submitter
// @description  Listen for postMessage from parent, log to console, enter it into the chat input, and submit
// @match        https://chatgpt.com/*
// @version 0.0.1.20250512165455
// @namespace https://greasyfork.org/users/1435046
// ==/UserScript==

(function () {
    'use strict';

    window.addEventListener('message', function (event) {
        if (event.data && event.data.type === 'searchButtonClicked') return;

        const composer = document.querySelector('.ProseMirror');
        if (!composer || typeof event.data !== 'string') return;

        // Inject the text
        composer.innerText = event.data;

        // Trigger input event to notify ProseMirror
        composer.dispatchEvent(new InputEvent('input', { bubbles: true }));

        // Set up a MutationObserver to detect when the DOM reflects the new input
        const observer = new MutationObserver(() => {
            // Once mutation is detected, we assume ProseMirror has registered it
            observer.disconnect();

            // Submit the message
            composer.dispatchEvent(new KeyboardEvent('keydown', {
                bubbles: true,
                cancelable: true,
                key: 'Enter',
                code: 'Enter',
                which: 13,
                keyCode: 13
            }));
        });

        // Start observing the ProseMirror node
        observer.observe(composer, {
            childList: true,
            subtree: true,
            characterData: true
        });
    });
})();