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 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Minimal ChatGPT Message Logger + Injector + Submitter
  3. // @description Listen for postMessage from parent, log to console, enter it into the chat input, and submit
  4. // @match https://chatgpt.com/*
  5. // @version 0.0.1.20250512170044
  6. // @namespace https://greasyfork.org/users/1435046
  7. // ==/UserScript==
  8.  
  9. (function () {
  10. 'use strict';
  11.  
  12. window.addEventListener('message', function (event) {
  13.  
  14. if (event.data && event.data.type === 'searchButtonClicked') {
  15. const searchBtn = document.querySelector('[data-testid="composer-button-search"]');
  16. if (searchBtn) searchBtn.click();
  17. return;
  18. }
  19.  
  20. const composer = document.querySelector('.ProseMirror');
  21. if (!composer || typeof event.data !== 'string') return;
  22.  
  23. // Inject the text
  24. composer.innerText = event.data;
  25.  
  26. // Trigger input event to notify ProseMirror
  27. composer.dispatchEvent(new InputEvent('input', { bubbles: true }));
  28.  
  29. // Set up a MutationObserver to detect when the DOM reflects the new input
  30. const observer = new MutationObserver(() => {
  31. // Once mutation is detected, we assume ProseMirror has registered it
  32. observer.disconnect();
  33.  
  34. // Submit the message
  35. composer.dispatchEvent(new KeyboardEvent('keydown', {
  36. bubbles: true,
  37. cancelable: true,
  38. key: 'Enter',
  39. code: 'Enter',
  40. which: 13,
  41. keyCode: 13
  42. }));
  43. });
  44.  
  45. // Start observing the ProseMirror node
  46. observer.observe(composer, {
  47. childList: true,
  48. subtree: true,
  49. characterData: true
  50. });
  51. });
  52. })();