// ==UserScript== // @name New Paper Study主流网站文章阅读优化 // @namespace http://tampermonkey.net/ // @version 1.3 // @description 对百度百科baidubaike/csdn/知乎zhihu/简书jianshu/360doc/思否segmentfault/搜狐sohu阅读体验进行优化 // @author 白水 // @match https://baike.baidu.com/item/* // @match https://www.zhihu.com // @match https://www.zhihu.com/* // @match https://zhuanlan.zhihu.com/p/* // @match https://blog.csdn.net // @match https://blog.csdn.net/* // @match https://*.blog.csdn.net/* // @match https://www.jianshu.com/p/* // @match http://www.360doc.com/content/* // @match https://segmentfault.com/a/* // @match https://www.sohu.com/a/* // @icon https://cn.bing.com/favicon.ico // @grant none // @home-url https://greasyfork.org/zh-CN/scripts/417880 // @require https://code.jquery.com/jquery-3.5.1.min.js // @run-at document-end // @downloadURL https://update.greasyfork.icu/scripts/419818/New%20Paper%20Study%E4%B8%BB%E6%B5%81%E7%BD%91%E7%AB%99%E6%96%87%E7%AB%A0%E9%98%85%E8%AF%BB%E4%BC%98%E5%8C%96.user.js // @updateURL https://update.greasyfork.icu/scripts/419818/New%20Paper%20Study%E4%B8%BB%E6%B5%81%E7%BD%91%E7%AB%99%E6%96%87%E7%AB%A0%E9%98%85%E8%AF%BB%E4%BC%98%E5%8C%96.meta.js // ==/UserScript== //--------------常用封装-------------------- //写入JQuery 3.5.1 //(function(url) { document.body.appendChild(document.createElement('script')).src = url; })("https://code.jquery.com/jquery-3.5.1.js"); //var $;//不能写入 //写入以下的var,太多方法没啥必要 //(function(textContent) { document.body.appendChild(document.createElement('script')).textContent = textContent; })(usefulVar); //--------------定义-------------- var host = window.location.host, //host href = window.location.href; //href /** get 指定JS querySelector的对象,返回一个对象 * @param {*} querySelector JS 选择器 */ function getByQuerySelector(querySelector) { if (!document.querySelector(querySelector)) return false; return document.querySelector(querySelector); } /** get 指定id属性值的对象,返回一个对象 * @param {*} Id */ function getById(Id) { if (!document.getElementsById(Id)) return false; return document.getElementsById(Id); } /**get 指定TagName的对象 ,返回一个数组 * @param {*} TagName 指定tag的对象 */ function getByTagNameArr(TagName) { if (!document.getElementsByTagName(TagName)) return false; return document.getElementsByTagName(TagName); } /** get 指定Name属性的对象,返回一个数组 * @param {*} Name 指定Name的对象 */ function getByNameArr(Name) { if (!document.getElementsByName(Name)) return false; return document.getElementsByName(Name); } /** get 指定ClassName的对象,返回一个数组//仅仅缩写 * @param {*} ClassName 类名称 */ function getByClassNameArr(ClassName) { if (!document.getElementsByClassName(ClassName)) return false; //几乎百分百不会触发 return document.getElementsByClassName(ClassName); } /** get 筛选指定ClassName,利用getByClassNameArr数组返回一个数组 * @param {*} ClassName 类名称 */ function getClassUniqueArr(ClassName) { var oElements = getByClassNameArr(ClassName), boxArr = new Array(); for (var i = 0, len = oElements.length; i < len; i++) { if (oElements[i].className == ClassName) { boxArr.push(oElements[i]); } } return boxArr; } function QRemove(querySelector) { if (!getByQuerySelector(querySelector)) console.log("错误:QRemove不存在;返回值:" + getByQuerySelector(querySelector) + "参数:" + querySelector); else getByQuerySelector(querySelector).remove(); } function CRemove(ClassName) { if (getByClassNameArr(ClassName).length == 0) console.log("错误:CRemove不存在;返回值:" + getByClassNameArr(ClassName) + "参数:" + ClassName); else if (getByClassNameArr(ClassName).length == 1) getByClassNameArr(ClassName)[0].remove(); //唯一 else { console.log("提示:CRemove不唯一;返回值:" + getByClassNameArr(ClassName) + "参数:" + ClassName); ArrRomve(getByClassNameArr(ClassName)); } } function ParentRemoveByCRemove(ClassName) { if (getByClassNameArr(ClassName).length == 0) console.log("错误:ParentRemoveByCRemove不唯一;返回值:" + ParentRemoveByCRemove(ClassName) + "参数:" + ClassName); else if (getByClassNameArr(ClassName).length == 1) getByClassNameArr(ClassName)[0].remove(); //唯一 else { console.log("提示:ParentRemoveByCRemove不唯一;返回值:" + getByClassNameArr(ClassName) + "参数:" + ClassName); ArrRomve(getByClassNameArr(ClassName)); } } /** 倒序遍历删除编辑按钮 * @param {*} getByArr getBy系列Arr */ function ArrRomve(Arr) { if (Arr.length == 0) console.log("错误:ArrRomve不存在;返回值:" + ArrRomve(Arr) + "参数:" + Arr); else { for (var i = Arr.length - 1; i > 0; i--) { Arr[i].remove(); } } } /* Element.prototype.remove = function() { // 像那些属性节点,注释节点,文本节点等等根本不可能做父节点,所以可以说parentNode返回的一般都是父元素节点====一直没有判断这个节点是否存在 //if (!this) return false; //if (!this.parentNode) return false; this.parentNode.removeChild(this); //父元素节点里删除调用者 }; */ /* HTMLCollection.prototype.remove = function() { // 像那些属性节点,注释节点,文本节点等等根本不可能做父节点,所以可以说parentNode返回的一般都是父元素节点====一直没有判断这个节点是否存在 //if (this) return false; //HTMLCollection [] 必定存在 if (this.length == 0) return false; //不存在 //if (!this.parentNode) return false; this.parentNode.removeChild(this); //父元素节点里删除调用者 }; */ //--------------Function-------------- //--------------常用封装-------------------- (function() { 'use strict'; //文章优化 function paper() { //CSDN function csdn() { //this指向paper CRemove("csdn-side-toolbar"); //右下角引导按钮 QRemove("#mainBox > aside"); //左边博主信息 QRemove("#recommend-list-box"); //右边推广 QRemove("#mainBox > main > div.first-recommend-box.recommend-box"); //底下第一下载推广 QRemove("#mainBox > main > div.second-recommend-box.recommend-box"); //底下第二下载推广 QRemove("#mainBox > main > div.blog-footer-bottom"); //脚注???经常删不掉 QRemove("#passportbox"); //移除登录 } //知乎 function zhihu() { QRemove("#root > div > div.AdblockBanner"); //首页广告拦截 QRemove("body > div.__web-inspector-hide-shortcut__"); //移除登录 QRemove("#root > div > main > div > div > div.GlobalSideBar.GlobalSideBar--old > div > div"); //右边创作 QRemove("#root > div > main > div > div.Question-main > div > div > div.Card.QuestionInvitation"); //问问题 QRemove("#root > div > main > div > div > div.GlobalSideBar.GlobalSideBar--old > div > div.Sticky.is-fixed > footer"); //脚注 QRemove("#root > div > main > div > div.Question-main > div.Question-sideColumn.Question-sideColumn--sticky"); //右边博主信息 } //知乎专栏 function zhihuzhuanlan() { QRemove("#root > div > main > div > div.ColumnPageHeader-Wrapper"); //广告拦截 } //简书 function jianshu() { QRemove("#__next > div._3Pnjry"); //左边分享 QRemove("#__next > div._21bLU4._3kbg6I > div > aside"); //右边推广 QRemove("#__next > footer"); //下方评论 QRemove("body > div:nth-child(13)"); //下载推广 } //百度百科 function baidubaike() { mustDelete(); function mustDelete() { getByQuerySelector("body > div.header-wrapper.pc-header-new > div > div").style.height = "0px"; QRemove("body > div.lemmaWgt-searchHeader > div > div.tool-buttons"); //滚动之后,顶部右上角工具栏 QRemove("body > div.header-wrapper.pc-header-new > div.topbar.cmn-clearfix"); //顶部百度更多导航内容 QRemove("#searchForm > a.help"); //顶部帮助 QRemove("#J-declare-wrap"); //顶部免责声明 QRemove("body > div.navbar-wrapper"); //头部百科导航都能删除 CRemove("top-tool "); //右上角贴边删除class一次性去除试试?ok! getByQuerySelector("body > div.body-wrapper > div.content-wrapper > div.content").style.width = "850px"; //中间内容 QRemove("body > div.body-wrapper > div.content-wrapper > div > div.side-content"); //中间侧边内容 QRemove("#side-share"); //中间右边贴边固定分享 QRemove("#tashuo_bottom"); //脚部他说 QRemove("body > div.wgt-footer-main"); //脚部备案 CRemove('edit-icon'); //删除编辑按钮 } if (getByQuerySelector("body > div.body-wrapper.feature.feature_small.custom > div.secondsknow-large-container.J-secondsknow-large-container")) { console.log("推广百科"); CRemove("edit-lemma"); //编辑 CRemove("lemma-discussion"); //讨论 QRemove("body > div.body-wrapper.feature.feature_small.custom > div.secondsknow-large-container.J-secondsknow-large-container"); //推广秒懂,学慧网 QRemove("#pageTabs"); //中间最上面推广标签 QRemove("body > div.body-wrapper.feature.feature_small.custom > div.content-wrapper > div > div.main-content > div.main_tab.main_tab-defaultTab.curTab > iframe"); //推广视频,学慧网等等.容易因为这个出bug,删除不掉导致各种问题, } if (getByQuerySelector("body > div.body-wrapper > div.content-wrapper > div > div.main-content > span")) { console.log("科普中国"); QRemove("body > div.body-wrapper > div.before-content"); //秒懂_科普 QRemove("body > div.body-wrapper > div.before-content > div.J-wgt-seconds-know-container"); //秒懂_科普 QRemove("body > div.body-wrapper > div.content-wrapper > div > div.main-content > span"); //专家贡献 QRemove("body > div.body-wrapper > div.content-wrapper > div.content > div.main-content > span.posterFlag.expert-icon"); //专家贡献 QRemove("#hotspotmining_s"); //中间上面推广他说_科普 QRemove("body > div.body-wrapper > div.content-wrapper > div > div.main-content > div.special-topic"); //秒懂_科普 } if (getByQuerySelector("body > div.body-wrapper > div.before-content > div")) { console.log("普通词条"); CRemove("edit-lemma"); //编辑 CRemove("lemma-discussion"); //讨论 QRemove("body > div.body-wrapper > div.content-wrapper > div > div.main-content > dl.lemmaWgt-lemmaTitle.lemmaWgt-lemmaTitle- > dd > a.add-video.cmn-btn-hover-blue.cmn-btn-28.J-add-video-link"); //上传视频 QRemove("body > div.body-wrapper > div.before-content > div"); //秒懂视频_普通词条 } //getByQuerySelector("body > div.body-wrapper > div.content-wrapper > div > div.side-content > div.side-catalog").empty()//empty导航目录提取 } //360doc /** * //顶部bar???不知道是否有需求删除 * //转载???无法删除,原因:动态加载 * //vip??????360的js无法加载,原因未明 */ function doc360() { if (document.querySelector("#bgchange")) document.querySelector("#bgchange").style.width = "1000px"; //外部1000px if (document.querySelector("#articlecontent > table")) document.querySelector("#articlecontent > table").style.width = "1000px"; //内部1000px //CRemove("header"); //顶部bar???;不知道是否有需求删除;是否需要直接使用搜索框 //QRemove("#zcommondID > span.newbtn_forward"); //转载???无法删除;原因:动态加载;解决方案:1.直接去掉整个工具栏,2.硬要看一下收藏:有待解决 QRemove("#adarttopgoogle"); //vip广告 CRemove("floatqrcode"); //左边二维码 CRemove("a_right"); //右侧返回顶部 QRemove("#goTop2"); //右下角返回顶部 //先去除div3一大串东西先 if (document.querySelector("body > div.doc360article_content > div.a_left > div:nth-child(3)").style.width == "676px") { QRemove("body > div.doc360article_content > div > div:nth-child(3)"); } QRemove("#bgchange > div.bottom_controler"); //bottom_controler QRemove("#bgchange > div.prev_next"); //推荐 QRemove("#divtort"); //与我们联系 QRemove("body > div.atfixednav"); //浮动顶部 //异步动态js QRemove("#registerOrLoginLayer"); //登录可以复制 } //segmentfault function segmentfault() { CRemove("functional-area-left sticky-top d-none d-xl-flex"); //左侧分享 QRemove("#sf-article > div.row > div.col-12.col-xl-auto"); //右侧广告栏 QRemove("#footer"); //脚注 } //sohu function sohu() { QRemove("#main-header"); //顶部 QRemove("#article-container > div.column.left"); //左边 QRemove("#left-bottom-ad");//左下角广告 QRemove("#right-side-bar"); //右边 QRemove("#float-btn"); //右边按钮 QRemove("#backsohucom > span.backword"); QRemove("#article-container > div > div > div > div.statement"); QRemove("#article-container > div > div > div > div.bottom-relate-wrap.clear.type-3"); //利用遍历删除所有element,只能用倒序???? //利用.children[i],test complete function test01() { if (getByQuerySelector("#article-container > div.left.main")) { for (var i = 0, j = 0, len = document.querySelector("#article-container > div.left.main").children.length; i < len; i++) { //Element.hasAttributes()必定有ture/flase,下次一定要把else写完整 //if (document.querySelector("#article-container > div").children[j].hasAttributes()) { if (getByQuerySelector("#article-container > div").children[j].attributes[0].value == "content") { j++; } else { getByQuerySelector("#article-container > div").children[j].remove(); //改用CSS3选择器:nth-child,测试好像是不能够更改变量 //document.querySelector("#article-container > div:nth-child(" + j + ")").remove(); } //} else; } } } test02(); //利用css3:nth.child,test complete function test02() { if (getByQuerySelector("#article-container > div.left.main")) { for (var i = 0, j = 1, len = document.querySelector("#article-container > div.left.main").children.length; i < len; i++) { //Element.hasAttributes()必定有ture/flase,下次一定要把else写完整 //if (document.querySelector("#article-container > div").children[j].hasAttributes()) { if (document.querySelector("#article-container > div > div:nth-child(" + j + ")").attributes[0].value == "content") { j++; } else { //getByQuerySelector("#article-container > div").children[j].remove(); //改用CSS3选择器:nth-child,测试好像是不能够更改变量 document.querySelector("#article-container > div > div:nth-child(" + j + ")").remove(); } //} else; } } } } //判断网页host switch (host) { case "blog.csdn.net": csdn(); break; case "www.zhihu.com": zhihu(); break; case "zhuanlan.zhihu.com": zhihuzhuanlan(); break; case "www.jianshu.com": jianshu(); break; case "baike.baidu.com": baidubaike(); break; case "www.360doc.com": doc360(); break; case "segmentfault.com": segmentfault(); break; case "csdnnews.blog.csdn.net": csdn(); break; case "www.sohu.com": sohu(); break; default: console.log(host + "域名不是文章"); } } //延时 //window.onload = function() { setTimeout(paper(), 0); }; //jQuery预载 var $ = jQuery.noConflict(true); //$(document).ready(paper()); paper(); //setTimeout(paper(),10000); //延时一段时间后执行function,只执行一次; //setInterval(function,5000);//以time为时间间隔,反复执行function。 })();