如何使用 tampermonkey 滚动到页面底部?

问题描述 投票:0回答:1

我正在尝试创建一个简单的tampermonkey脚本,在切换频道后滚动到不和谐的页面最底部,该脚本应该等待5秒,然后滚动到频道底部,这样我就可以看到最近的内容留言

代码目前什么也不做,我想要它做的是滚动到页面的最底部

这是我尝试过的代码

(function() {
    'use strict';

    function scrollToBottom() {
        const scroller = document.querySelector('div[class*="scrollerContent-"]');
        if (scroller) {
            scroller.scrollTop = scroller.scrollHeight;
        }
    }

    function setupURLChangeObserver() {
        window.addEventListener('popstate', () => {
            setTimeout(scrollToBottom, 500);  // Delay to allow content to load
        });
    }

    setupURLChangeObserver();
})();
(function() {
    'use strict';

    function simulateMouseScroll() {
        const scroller = document.querySelector('div[class*="scrollerContent-"]');
        if (scroller) {
            for (let i = 0; i < 100; i++) {
                scroller.dispatchEvent(new WheelEvent('wheel', { deltaY: 100, bubbles: true }));
            }
        }
    }

    function setupURLChangeObserver() {
        window.addEventListener('popstate', () => {
            setTimeout(simulateMouseScroll, 500);  // Delay to allow content to load
        });
    }

    setupURLChangeObserver();
})();

我也尝试过

scroller.scrollTo(0, maxScrollTop);

javascript scroll discord tampermonkey webautomation
1个回答
0
投票

您的选择器 (

div[class*="scrollerContent-"]
) 不正确,并且
popstate
仅在 特定情况下触发。

使用 Navigation API 代替,但 Firefox 尚不支持。作为替代方案,您可以使用 window.onurlchange (仅限 Tampermonkey)。

有关检测导航的跨浏览器/脚本管理器方法,请参阅我之前的答案此处

这应该适用于 Chrome + Tampermonkey:

window.navigation.addEventListener('navigatesuccess', () => {
    if (!window.location.pathname.startsWith('/channels/')) return;

    setTimeout( () => {
        const chat = document.querySelector('main[class^=chatContent] div[class^=scroller_]');
        const jump = document.querySelector('div[class^=jumpToPresentBar_] > button');
        jump && jump.click() || chat && chat.scrollTo(0, chat.scrollHeight)
    }, 100);
});
© www.soinside.com 2019 - 2024. All rights reserved.