DeepSeek Native Setter Injector

Listens for postMessage events on chat.deepseek.com and logs them

Od 11.05.2025.. Pogledajte najnovija verzija.

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name        DeepSeek Native Setter Injector
// @description  Listens for postMessage events on chat.deepseek.com and logs them
// @match       https://chat.deepseek.com/*
// @grant       none
// @version 0.0.1.20250511171540
// @namespace https://greasyfork.org/users/1435046
// ==/UserScript==

(function() {
    'use strict';

    // Cache the native setter for HTMLTextAreaElement.value
    const valueSetter = Object.getOwnPropertyDescriptor(
        HTMLTextAreaElement.prototype, 'value'
    ).set;

    window.addEventListener('message', event => {
        // 1. Read the incoming message
        const message = event.data;

        // 2. Find DeepSeek’s chat textarea
        const ta = document.getElementById('chat-input');
        if (!ta) return;

        // 3. Focus so the app knows it’s active
        ta.focus();

        // 4. Use the native setter to update both DOM and React state
        valueSetter.call(ta, message);

        // 5. Dispatch a proper InputEvent for React/Vue/etc.
        ta.dispatchEvent(new InputEvent('input', { bubbles: true }));
    });
})();