起因

得益于国产软件日渐流氓,这年头的“客户端”我是能不用就不用。可是用网页听有声小说面临的第一个问题就是,点击播放后有个“下载桌面客户端”的弹窗。就下面这玩意儿:
油猴脚本-删除网页版喜马拉雅的“客户端下载”弹窗
最恼人的是:这个弹窗不会自动消失,十分碍眼!
于是临时起意写了这个脚本,因为是临时起意写的,代码过于潦草,所以不在greasyfork上发布了。

用法

油猴图标上右键,选择“添加脚本”
油猴脚本-删除网页版喜马拉雅的“客户端下载”弹窗
然后在编辑页面把下面的脚本贴进去。ctrl+S保存即可。

脚本内容

// ==UserScript==
// @name         删除喜马拉雅客户端下载提示
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  删除喜马拉雅客户端下载提示
// @author       墨笑
// @run-at       document-idle
// @match        https://www.ximalaya.com/*
// @match        https://*.ximalaya.com/sound/*
// @match        https://ximalaya.com/sound/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=ximalaya.com
// @grant        none
// ==/UserScript==
(function () {
    /**
    重要方法:不停轮询,直到selector代表的节点出现。
    */
    const isElementLoaded = async (selector) => {
        while (document.querySelector(selector) === null) {
            await new Promise((resolve) => requestAnimationFrame(resolve));
        }
        return document.querySelector(selector);
    };
    const keepBodyScrollable = ()=>{
            //因为喜马拉雅的页面转跳不会刷新整个页面
            //所以这边用了个笨办法隔一段时间就主动修改body的可滚动属性
            setInterval(function(){
                document.querySelector("body").style.overflow = "scroll";
            },500);
    };

    keepBodyScrollable();
    isElementLoaded(
        "#award > div.xm-player-case > div.xm-player.is-locked > div.xm-player-wrapper > div.xm-player-btns"
    ).then((selector) => {
        // realWork()
        deletePopWindows();
        console.log("123 wood man");
    });

    isElementLoaded(
        "body > div:nth-child(16)"
    ).then((selector) => {
        // realWork()
        deletePopWindows();
        console.log("123 wood man");
    });;

    /**
     **找到弹窗并删除
    **/
    let deletePopWindows = ()=>{
        let mask = document.querySelector("body > div:nth-child(16) > div > div");
        if (mask !== undefined && mask !== null) {
            mask.remove();
        }
    
        let el = document.querySelector(
            "body > div:nth-child(16) > div > div.xui-modal-wrap.zj_"
        );
        if (el !== undefined && el !== null) {
            el.remove();
        }
            console.log("删除了弹窗");
        };
})();