只看博客内容

支持【CSDN,简书,博客园,知乎,掘金,51CTO,51CTO文章,阿里云开发者社区,腾讯云开发者社区,微信,InfoQ,Github】等。 必要时临时关闭脚本,可能是需要验证。

当前为 2023-02-15 提交的版本,查看 最新版本

// ==UserScript==
// @name        只看博客内容
// @description 支持【CSDN,简书,博客园,知乎,掘金,51CTO,51CTO文章,阿里云开发者社区,腾讯云开发者社区,微信,InfoQ,Github】等。 必要时临时关闭脚本,可能是需要验证。
// @namespace   https://gitee.com/inch_whf/tampermonkey-script-inch
// @version     1.23
// @author      wuhongfei
// @license     MIT
// @grant       none
// @match       *://blog.csdn.net/*/article/details/*
// @match       *://*.blog.csdn.net/article/details/*
// @match       *://www.jianshu.com/p/*
// @match       *://www.cnblogs.com/*/*/*
// @match       *://zhuanlan.zhihu.com/p/*
// @match       *://www.zhihu.com/question/*
// @match       *://juejin.cn/post/*
// @match       *://blog.51cto.com/u_*
// @match       *://www.51cto.com/article/*
// @match       *://cloud.tencent.com/developer/article/*
// @match       *://bbs.huaweicloud.com/blogs/*
// @match       *://developer.aliyun.com/article/*
// @match       *://mp.weixin.qq.com/*
// @match       *://www.infoq.cn/article/*
// @match       *://www.infoq.cn/news/*
// ==/UserScript==

// 启动函数
var host = window.location.host;
main(host);

// 主函数
function main(host) {
    'use strict';

    // 特制函数
    zhihu();
    csdn();
    tencent_cloud();

    const value = get_value(host);
    const timeout = value[1] || 10;

    window.onload=function(){
        setTimeout(function () {
        const dom_header_time = document.createElement("div");
        const dom_before = document.querySelector(value[4]);
        const dom_main = document.querySelector(value[0] || "article");

        const header = getHeader(value[2]);
        const date = getTime(value[3]);
        dom_header_time.innerHTML = `<b>${header}<br/>${date}<br/><br/></b>`;

        console.log(dom_header_time)
        console.log(dom_before)
        console.log(dom_main)

        body_just_script_link();
        dom_adjustment(dom_header_time);
        if (dom_before != null) { dom_adjustment(dom_before); }
        dom_adjustment(dom_main);
    }, timeout)};
}

//删除标题中的冗余信息去掉 (xx条消息)
function removeInfo() {
    let title = document.getElementsByTagName("title")[0];
    title.innerText = title.innerText.match(/(\([0-9]+.*[条](?=私信|消息).*?\)\s*)?(.+)/)[2];
}

// 获得dom元素
function get_value(host) {

    /**
     * 1. 每一项格式如下
     * [
     *  主题元素选择器1,
     *  等待时间(加载时间),
     *  标题选择器(为空则使用默认),
     *  时间选择器(为空则使用默认),
     *  主题元素选择器2(如知乎专栏,为空则跳过),
     * ]
     *
     * 2. 排版如下
     * - 标题
     * - 时间
     * - 主题元素选择器2
     * - 主题元素选择器1
     */

    const map = {
        // https://blog.csdn.net/qwer123451234123/article/details/124148166
        'blog.csdn.net': ['#article_content', 0, null, '.time'],
        // https://www.jianshu.com/p/4d85661fba0a
        'www.jianshu.com': ['article', 10],
        // https://www.cnblogs.com/zhangzl419/p/14649603.html
        'www.cnblogs.com': ['.post', 0, '.postTitle', '#cb_post_title_url',],
        // https://zhuanlan.zhihu.com/p/345475033
        'zhuanlan.zhihu.com': ['.Post-RichTextContainer', 0, null, '.ContentItem-time'],
        // https://www.zhihu.com/question/20306249/answers/updated
        'www.zhihu.com': ['.AnswersNavWrapper', 0, null, null, '.QuestionRichText'],
        // https://juejin.cn/post/6844903688088059912
        'juejin.cn': ['.markdown-body'],
        // https://www.51cto.com/article/745047.html
        'blog.51cto.com': ['#container'],
        'www.51cto.com': ['#container'],
        // https://developer.aliyun.com/article/871736
        'developer.aliyun.com': ['.article-inner', 10, null,  '.article-info-time', '.article-desc'],
        // https://cloud.tencent.com/developer/article/2011799
        'cloud.tencent.com': ['.J-articleContent', 0, null, '.article-info'],
        // https://bbs.huaweicloud.com/blogs/314775
        'bbs.huaweicloud.com': ['.markdown-preview', 400, null, '.article-write-time', '.cloud-blog-detail-summary'],
        // https://mp.weixin.qq.com/s/uX4ivZUxBzgPx2S_YAOdtQ
        'mp.weixin.qq.com': ['.rich_media_content', 0, null, '#publish_time'],
        // https://www.infoq.cn/article/ebdcihizbezofu9q6pi7
        'www.infoq.cn': ['.article-preview', 500, null, '.read-time'],
    };

    if (host.endsWith("blog.csdn.net")) {
        host = "blog.csdn.net";
    }
    return map[host];
}

function getTime(selector) {
    // time标签的datetime属性的前10个字符
    const dom = document.querySelector(selector|| 'time');
    if(!dom){
        return '无'
    }
    const time_string = dom.getAttribute('datetime') || dom.innerText;
    return /\d{4}[-\.\/]\d{2}[-\.\/]\d{2}/.exec(time_string)[0].replace(/[-\.\/]/g, "-");
}
function getHeader(selector) {
    // time标签的datetime属性的前10个字符
    return document.querySelector(selector || 'h1').innerText
}



// 只保留内容dom
function body_just_script_link() {

    const body = document.body;

    body.style.setProperty('background', 'rgba(18,18,18,0)', 'important');

    const children = body.children
    for (var i = children.length - 1; i >= 0; i--) {
        if ("LINK" != children[i].tagName && "SCRIPT" != children[i].tagName) {
            // if("DIV"==children[i].tagName){
            body.removeChild(children[i]);
        }
    }

}


// 调整dom元素
function dom_adjustment(dom) {

    document.body.appendChild(dom);

    dom.style.width = '95%';
    dom.style.margin = 'auto';
    dom.style.display = 'block';

    const children2 = dom.children
    for (var i = children2.length - 1; i >= 0; i--) {
        children2[i].style.width = '100%';
    }

    if (typeof window.orientation == 'undefined') {
        // 当前设备不是移动设备,限制宽度
        // 参考:https://www.ruanyifeng.com/blog/2021/09/detecting-mobile-browser.html

        const imgs = dom.getElementsByTagName("img");
        for (var i = imgs.length - 1; i >= 0; i--) {
            imgs[i].style.width = '';
            imgs[i].style.maxWidth = '50%';
            imgs[i].style.display = 'block';
        }
    }

}

// 开始特制===========================================================================

// 知乎特制
function zhihu() {
    if ('zhuanlan.zhihu.com' != host) {
        return;
    }

    // 直接渲染所有图面
    (function () {
        const attribute = 'data-actualsrc';
        const imgs = document.querySelectorAll('img[' + attribute + ']');
        for (var i = imgs.length - 1; i >= 0; i--) {
            const img = imgs[i];
            imgs[i].setAttribute('src', imgs[i].getAttribute(attribute));
        }
    })();

    // 关闭登录弹窗

    setTimeout(() => {
        // 获得按钮
        const closeButton = document.querySelector(".Modal-closeIcon")
        if (closeButton == null) {
            return;
        }

        // 点击
        closeButton.dispatchEvent(new MouseEvent('click', {
            view: window,
            bubbles: true,
            cancelable: true
        }));
        // 把html中的“overflow:hidden"去掉,小时滚动条
        document.querySelector("html").style.overflow = "";
    }, 1000);

    //   // 展示gif
    //   if (typeof window.orientation == 'undefined') {
    //     // 当前设备不是移动设备,限制gif
    //     // 参考:https://www.ruanyifeng.com/blog/2021/09/detecting-mobile-browser.html

    //     GifPlayers = document.querySelectorAll(".GifPlayer");
    //     for (var i = GifPlayers.length - 1; i >= 0; i--) {
    //       GifPlayers[i].querySelector(".GifPlayer-cover").style.paddingTop = '';
    //       GifPlayers[i].getElementsByTagName("video").style.objectFit = "contain"
    //     }

    //   }

}

// csdn特制
function csdn() {
    if ('blog.csdn.net' != host) {
        return;
    }

    // 关闭“CSDN:关注博主即可阅读全文”
    // 参考:https://www.isolves.com/it/cxkf/yy/js/2022-06-29/56707.html
    var article_content = document.getElementById("article_content");
    if (!article_content.hasAttribute('style')) {
        return;
    }
    article_content.removeAttribute("style");

    var follow_text = document.getElementsByClassName('follow-text')[0];
    follow_text.parentElement.parentElement.removeChild(follow_text.parentElement);

    var hide_article_box = document.getElementsByClassName('hide-article-box')[0];
    hide_article_box.parentElement.removeChild(hide_article_box);

}

// 腾讯云特制
function tencent_cloud() {
    if ('cloud.tencent.com' != host) {
        return;
    }
    var button = document.querySelector("#react-root > div:nth-child(1) > div.J-body.col-body.pg-2-article > div.com-3-layout > div.layout-main > section.com-2-panel.col-2-article.J-articlePanel > div.com-markdown-collpase.com-markdown-collpase-hide > div.com-markdown-collpase-toggle > a");
    if (button) {
        button.click();
    }
}