只看博客内容

支持【CSDN,简书,博客园,知乎,掘金,51CTO,51CTO文章,阿里云开发者社区,腾讯云开发者社区,微信,InfoQ,Github】 <br/> 0. 必要时临时关闭脚本,可能是需要验证;1. 知乎需要登陆;2. 掘金有时需要滑动验证;3. 存在部分cnblogs无法使用

目前為 2023-01-17 提交的版本,檢視 最新版本

// ==UserScript==
// @name        只看博客内容
// @namespace    https://gitee.com/WHF-ZUCC/plugin
// @version     1.17
// @author       wuhongfei
// @license MIT
// @namespace   Violentmonkey Scripts
// @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       *://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.it610.com/article/*
// @match       *://www.infoq.cn/article/*
// @match       *://www.infoq.cn/news/*
// @match       *://github.com/*/*/issues/*
// @grant       none
// @description 支持【CSDN,简书,博客园,知乎,掘金,51CTO,51CTO文章,阿里云开发者社区,腾讯云开发者社区,微信,InfoQ,Github】 <br/> 0. 必要时临时关闭脚本,可能是需要验证;1. 知乎需要登陆;2. 掘金有时需要滑动验证;3. 存在部分cnblogs无法使用
// ==/UserScript==

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

// 调整dom元素
function dom_adjustment(dom){
  divMaxWidth = dom.clientWidth;
  console.info(divMaxWidth);
  dom.style.width = '95%';
  dom.style.margin = 'auto';

  body = document.querySelector('body');
  // body.style.background = '';

  // https://blog.csdn.net/x619y/article/details/80604609
  body.style.setProperty('background', '#f5f6f7', 'important');

  // body.style.background-image = 'url("")';
  // body.style.removeProperty('background-image');

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

  imgs = dom.getElementsByTagName("img");

  var mql = window.matchMedia("(orientation: portrait)").matches;
  for (var i = imgs.length - 1; i >= 0; i--) {
    if (typeof window.orientation == 'undefined') {
      // 当前设备不是移动设备,限制宽度
      // 参考:https://www.ruanyifeng.com/blog/2021/09/detecting-mobile-browser.html
      imgs[i].style.width = '';
      imgs[i].style.maxWidth = '50%';
    }

  }

}

function see(host){

  if(host=='blog.csdn.net'){
      // 关闭“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);

  }else if(host=='cloud.tencent.com'){
    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();
  }

}

function get_dom (host) {
    const map = {
      'blog.csdn.net'        :'#article_content',
      'www.jianshu.com'      :'div > div > div > div > section:nth-child(1) > article',
      'www.cnblogs.com'      :'#cnblogs_post_body', // https://www.cnblogs.com/intotw/p/13816056.html
      // 'www.cnblogs.com'      :'div.post',
      // 'www.cnblogs.com'      :'#topics > div',
      'zhuanlan.zhihu.com'   :'.RichText',
      'juejin.cn'            :'#juejin > div.view-container > main > div > div.main-area.article-area > article',
      'blog.51cto.com'       :'#page_center > article > div.common-section.common-spacing.mb30.article-detail > div.article-content-wrap',
      'www.51cto.com'        :'#__layout > div > section.index-set > div > div.article-left > article',
      'developer.aliyun.com' :'body > div.article-detail > div.article-wrapper > div.left-content > div.content-wrapper',
      'cloud.tencent.com'    :'#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 > div.com-markdown-collpase-main > div:nth-child(1) > div',
      'bbs.huaweicloud.com'  :'#blogContent',
      'mp.weixin.qq.com'     :'#img-content',
      'www.it610.com'        :'body > div:nth-child(3) > div > div > div.col-md-9',
      'www.infoq.cn'         :'div.article-main',
      'github.com'           :'#discussion_bucket > div > div.Layout-main',
      };
      // 'zhuanlan.zhihu.com'   :'#root > div > main > div > article',

    if(host.endsWith("blog.csdn.net")){
        host = "blog.csdn.net";
    }
    const selector = map[host];
    const dom = document.querySelector(selector);
    return dom;
}

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

    const body = document.body;

    // var dom2 = dom;
    // while(dom2.parentElement.tagName!='BODY'){
    //   dom2 = dom2.parentElement;
    // }
    // body.removeChild(dom2);

    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]);
      }
    }

    body.appendChild(dom);
};

// 知乎图片懒加载,导致图片无法显示
function show_img () {
    attribute = 'data-actualsrc';
    imgs = document.querySelectorAll('img['+attribute+']');
    for (var i = imgs.length - 1; i >= 0; i--) {
      img = imgs[i];
      imgs[i].setAttribute('src',imgs[i].getAttribute(attribute));
    }
};

function main(host){
    'use strict';
    see(host);

    const dom = get_dom (host);
    body_just_content(dom);
    dom_adjustment(dom);
    show_img();
}

window.onload=function(){
  removeInfo()

  const host = window.location.host;
  if(['www.infoq.cn','bbs.huaweicloud.com','www.cnblogs.com'].includes(host)){
    setTimeout(()=>{main(host)},1000);
  // }else if(['juejin.cn','www.jianshu.com'].includes(host)){
  }else {
    main(host);
  }
}