Inject postMessage into ChatGPT without stealing focus
目前為
// ==UserScript==
// @name ChatGPT Native Injector (No Focus)
// @description Inject postMessage into ChatGPT without stealing focus
// @match https://chatgpt.com/*
// @version 0.0.1.20250512162359
// @namespace https://greasyfork.org/users/1435046
// ==/UserScript==
(function() {
'use strict';
// 1. Cache the native setter for .value
const valueSetter = Object.getOwnPropertyDescriptor(
HTMLTextAreaElement.prototype, 'value'
).set;
window.addEventListener('message', event => {
if (typeof event.data !== 'string') return;
const text = event.data.trim();
if (!text) return;
// 2. Find ChatGPT’s hidden textarea (it mirrors the ProseMirror editor)
const ta = document.querySelector('textarea.text-token-text-primary');
if (!ta) return;
// 3. Update its value without focusing
valueSetter.call(ta, text);
ta.dispatchEvent(new InputEvent('input', { bubbles: true }));
// 4. Click Send if available
const sendBtn = document.getElementById('composer-submit-button');
if (sendBtn && !sendBtn.disabled) {
sendBtn.click();
}
});
})();