DeepSeek No Auto-Scroll

Block auto-scroll in DeepSeek while keeping manual scroll control

目前為 2025-05-14 提交的版本,檢視 最新版本

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         DeepSeek No Auto-Scroll
// @description  Block auto-scroll in DeepSeek while keeping manual scroll control
// @match        *://*.deepseek.com/*
// @version 0.0.1.20250514122428
// @namespace https://greatest.deepsurf.us/users/1435046
// ==/UserScript==

(function() {
    'use strict';

    function applyNoAutoScroll(scrollContainer) {
        Object.defineProperty(scrollContainer, 'scrollTop', {
            set: function() {}, 
            get: () => scrollContainer._realScrollTop || 0,
            configurable: true
        });
        scrollContainer.addEventListener('scroll', () => {
            scrollContainer._realScrollTop = scrollContainer.scrollTop;
        });
    }

    // Create and start one observer
    const observer = new MutationObserver(() => {
        const scrollContainers = document.querySelectorAll('div.scrollable');
        scrollContainers.forEach(container => {
            if (!container._noAutoScrollApplied) {
                container._noAutoScrollApplied = true;
                applyNoAutoScroll(container);
            }
        });
    });
    observer.observe(document.body, { childList: true, subtree: true });

    // Also run once immediately in case containers already exist
    document.querySelectorAll('div.scrollable').forEach(container => {
        if (!container._noAutoScrollApplied) {
            container._noAutoScrollApplied = true;
            applyNoAutoScroll(container);
        }
    });
})();