// ==UserScript==
// @name 只看博客内容
// @description 支持【CSDN,简书,博客园,知乎,掘金,51CTO,51CTO文章,阿里云开发者社区,腾讯云开发者社区,微信,InfoQ,Github】等。 必要时临时关闭脚本,可能是需要验证。
// @namespace https://gitee.com/inch_whf/tampermonkey-script-inch
// @version 1.22
// @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==
// 启动函数
(function () {
window.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', '#post-date',],
// 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': ['.com-markdown-collpase', 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
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 () {
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));
}
})();
// 关闭登录弹窗
setTimeout(() => {
// 获得按钮
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();
}
}