修复Discuz下一页滚动

Discuz论坛在Chromium新版本下,点击下一页会滚动到最下面,导致难以识别刚才看到哪个帖子,这个脚本用来恢复以前的行为:点击下一页后不滚动。

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         修复Discuz下一页滚动
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  Discuz论坛在Chromium新版本下,点击下一页会滚动到最下面,导致难以识别刚才看到哪个帖子,这个脚本用来恢复以前的行为:点击下一页后不滚动。
// @author       rcocco
// @match        http*://*/*forum-*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
    let checkNextExist = setInterval(function(){
        let nextButton = document.querySelector("#autopbn");
        if(nextButton !== null){
            clearInterval(checkNextExist);
            nextButton.addEventListener("click", () => {
                let oldLastChild = document.getElementById("threadlisttableid").lastElementChild;
                let yOffset = window.pageYOffset;
                let checkNextLoaded = setInterval(function(){
                    if(oldLastChild !== document.getElementById("threadlisttableid").lastElementChild){
                        clearInterval(checkNextLoaded);
                        window.scrollTo({top:yOffset});
                    }
                },100);
            });
        }
    },100);
})();