知乎刷新时滚动页面到顶部并关闭广告

try to take over the world!

// ==UserScript==
// @name         知乎刷新时滚动页面到顶部并关闭广告
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  try to take over the world!
// @author       shihuang
// @match        https://www.zhihu.com/
// @include        *://www.zhihu.com/*
// @icon         https://www.google.com/s2/favicons?domain=zhihu.com
// @grant        none
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';


    var closeIcon = document.querySelector('.Topstory--old svg');
    if (closeIcon) {
        closeSvgClick(closeIcon)
    } else {
        var times = 0

        var intervalHandler = setInterval(() => {
            var closeIcon = document.querySelector('.Topstory--old svg');
            closeSvgClick()
            times++;
            if (times === 5) clearInterval(intervalHandler)
        }, 1000)
        }




    window.onbeforeunload = function(event){
        window.scrollTo(0, 0);
    }
    window.onload = function() {
        // 以防网速太慢,加载太卡问题
        closeSvgClick()

        // 删除信息流中的广告
        delAdFromAnswerList()
        listenTabClick()
    }

    function closeSvgClick(svgDom) {
        var closeIcon = svgDom || document.querySelector('.Topstory--old svg');
        if (closeIcon) {
            // 创建 svg 点击事件
            var svgEvent = document.createEvent("SVGEvents");
            svgEvent.initEvent("click",true,true);
            closeIcon.dispatchEvent(svgEvent);
        }

    }


    function listenTabClick() {
        var tabs = document.querySelectorAll('nav.TopstoryTabs>a')
        tabs && tabs.forEach(tab =>{
            tab.addEventListener('click', () => {
                var count = 0
                var intervalHandler = setInterval(() => {
                    var list = document.querySelector('#TopstoryContent div[role=list]')
                    if (list || count >= 6) {
                        delAdFromAnswerList()
                        clearInterval(intervalHandler)
                        return
                    }
                    count++
                }, 1000)
                })
        })
    }

    // 关闭嵌套在列表里广告,烦人!
    function delAdFromAnswerList() {
        var list = document.querySelector('#TopstoryContent div[role=list]')

        var delFn = function () {
            if(!list) return
            var ads = list.querySelectorAll('.TopstoryItem--advertCard')
            // 循环删除
            ads.forEach(ad => ad && ad.remove())
        }

        delFn()


        // 当滚动新增了之后,继续删除
        list && list.addEventListener('DOMNodeInserted', function () {
            delFn()
        })
    }
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址