New Paper Study主流网站文章阅读优化

对百度百科baidubaike/csdn/知乎zhihu/简书jianshu/360doc/思否segmentfault/搜狐sohu阅读体验进行优化

  1. // ==UserScript==
  2. // @name New Paper Study主流网站文章阅读优化
  3. // @namespace http://tampermonkey.net/
  4. // @version 1.3
  5. // @description 对百度百科baidubaike/csdn/知乎zhihu/简书jianshu/360doc/思否segmentfault/搜狐sohu阅读体验进行优化
  6. // @author 白水
  7.  
  8. // @match https://baike.baidu.com/item/*
  9. // @match https://www.zhihu.com
  10. // @match https://www.zhihu.com/*
  11. // @match https://zhuanlan.zhihu.com/p/*
  12. // @match https://blog.csdn.net
  13. // @match https://blog.csdn.net/*
  14. // @match https://*.blog.csdn.net/*
  15. // @match https://www.jianshu.com/p/*
  16. // @match http://www.360doc.com/content/*
  17. // @match https://segmentfault.com/a/*
  18. // @match https://www.sohu.com/a/*
  19.  
  20. // @icon https://cn.bing.com/favicon.ico
  21.  
  22. // @grant none
  23.  
  24. // @home-url https://gf.qytechs.cn/zh-CN/scripts/417880
  25. // @require https://code.jquery.com/jquery-3.5.1.min.js
  26. // @run-at document-end
  27. // ==/UserScript==
  28.  
  29. //--------------常用封装--------------------
  30. //写入JQuery 3.5.1
  31. //(function(url) { document.body.appendChild(document.createElement('script')).src = url; })("https://code.jquery.com/jquery-3.5.1.js");
  32. //var $;//不能写入
  33. //写入以下的var,太多方法没啥必要
  34. //(function(textContent) { document.body.appendChild(document.createElement('script')).textContent = textContent; })(usefulVar);
  35. //--------------定义--------------
  36. var host = window.location.host, //host
  37. href = window.location.href; //href
  38. /** get 指定JS querySelector的对象,返回一个对象
  39. * @param {*} querySelector JS 选择器
  40. */
  41. function getByQuerySelector(querySelector) {
  42. if (!document.querySelector(querySelector)) return false;
  43. return document.querySelector(querySelector);
  44. }
  45. /** get 指定id属性值的对象,返回一个对象
  46. * @param {*} Id
  47. */
  48. function getById(Id) {
  49. if (!document.getElementsById(Id)) return false;
  50. return document.getElementsById(Id);
  51. }
  52. /**get 指定TagName的对象 ,返回一个数组
  53. * @param {*} TagName 指定tag的对象
  54. */
  55. function getByTagNameArr(TagName) {
  56. if (!document.getElementsByTagName(TagName)) return false;
  57. return document.getElementsByTagName(TagName);
  58. }
  59. /** get 指定Name属性的对象,返回一个数组
  60. * @param {*} Name 指定Name的对象
  61. */
  62. function getByNameArr(Name) {
  63. if (!document.getElementsByName(Name)) return false;
  64. return document.getElementsByName(Name);
  65. }
  66. /** get 指定ClassName的对象,返回一个数组//仅仅缩写
  67. * @param {*} ClassName 类名称
  68. */
  69. function getByClassNameArr(ClassName) {
  70. if (!document.getElementsByClassName(ClassName)) return false; //几乎百分百不会触发
  71. return document.getElementsByClassName(ClassName);
  72. }
  73. /** get 筛选指定ClassName,利用getByClassNameArr数组返回一个数组
  74. * @param {*} ClassName 类名称
  75. */
  76. function getClassUniqueArr(ClassName) {
  77. var oElements = getByClassNameArr(ClassName),
  78. boxArr = new Array();
  79. for (var i = 0, len = oElements.length; i < len; i++) {
  80. if (oElements[i].className == ClassName) {
  81. boxArr.push(oElements[i]);
  82. }
  83. }
  84. return boxArr;
  85. }
  86.  
  87. function QRemove(querySelector) {
  88. if (!getByQuerySelector(querySelector)) console.log("错误:QRemove不存在;返回值:" + getByQuerySelector(querySelector) + "参数:" + querySelector);
  89. else getByQuerySelector(querySelector).remove();
  90. }
  91.  
  92. function CRemove(ClassName) {
  93. if (getByClassNameArr(ClassName).length == 0) console.log("错误:CRemove不存在;返回值:" + getByClassNameArr(ClassName) + "参数:" + ClassName);
  94. else if (getByClassNameArr(ClassName).length == 1) getByClassNameArr(ClassName)[0].remove(); //唯一
  95. else {
  96. console.log("提示:CRemove不唯一;返回值:" + getByClassNameArr(ClassName) + "参数:" + ClassName);
  97. ArrRomve(getByClassNameArr(ClassName));
  98. }
  99. }
  100.  
  101. function ParentRemoveByCRemove(ClassName) {
  102. if (getByClassNameArr(ClassName).length == 0) console.log("错误:ParentRemoveByCRemove不唯一;返回值:" + ParentRemoveByCRemove(ClassName) + "参数:" + ClassName);
  103. else if (getByClassNameArr(ClassName).length == 1) getByClassNameArr(ClassName)[0].remove(); //唯一
  104. else {
  105. console.log("提示:ParentRemoveByCRemove不唯一;返回值:" + getByClassNameArr(ClassName) + "参数:" + ClassName);
  106. ArrRomve(getByClassNameArr(ClassName));
  107. }
  108. }
  109.  
  110. /** 倒序遍历删除编辑按钮
  111. * @param {*} getByArr getBy系列Arr
  112. */
  113. function ArrRomve(Arr) {
  114. if (Arr.length == 0) console.log("错误:ArrRomve不存在;返回值:" + ArrRomve(Arr) + "参数:" + Arr);
  115. else {
  116. for (var i = Arr.length - 1; i > 0; i--) {
  117. Arr[i].remove();
  118. }
  119. }
  120. }
  121.  
  122. /*
  123. Element.prototype.remove = function() {
  124. // 像那些属性节点,注释节点,文本节点等等根本不可能做父节点,所以可以说parentNode返回的一般都是父元素节点====一直没有判断这个节点是否存在
  125. //if (!this) return false;
  126. //if (!this.parentNode) return false;
  127. this.parentNode.removeChild(this); //父元素节点里删除调用者
  128. };
  129. */
  130. /*
  131. HTMLCollection.prototype.remove = function() {
  132. // 像那些属性节点,注释节点,文本节点等等根本不可能做父节点,所以可以说parentNode返回的一般都是父元素节点====一直没有判断这个节点是否存在
  133. //if (this) return false; //HTMLCollection [] 必定存在
  134. if (this.length == 0) return false; //不存在
  135. //if (!this.parentNode) return false;
  136. this.parentNode.removeChild(this); //父元素节点里删除调用者
  137. };
  138. */
  139. //--------------Function--------------
  140. //--------------常用封装--------------------
  141.  
  142.  
  143. (function() {
  144. 'use strict';
  145. //文章优化
  146. function paper() {
  147. //CSDN
  148. function csdn() {
  149. //this指向paper
  150. CRemove("csdn-side-toolbar"); //右下角引导按钮
  151. QRemove("#mainBox > aside"); //左边博主信息
  152. QRemove("#recommend-list-box"); //右边推广
  153. QRemove("#mainBox > main > div.first-recommend-box.recommend-box"); //底下第一下载推广
  154. QRemove("#mainBox > main > div.second-recommend-box.recommend-box"); //底下第二下载推广
  155. QRemove("#mainBox > main > div.blog-footer-bottom"); //脚注???经常删不掉
  156. QRemove("#passportbox"); //移除登录(不可用)
  157. }
  158. //知乎
  159. function zhihu() {
  160. QRemove("#root > div > div.AdblockBanner"); //首页广告拦截
  161. QRemove("body > div.__web-inspector-hide-shortcut__"); //移除登录(不可用)
  162. QRemove("#root > div > main > div > div > div.GlobalSideBar.GlobalSideBar--old > div > div"); //右边创作
  163. QRemove("#root > div > main > div > div.Question-main > div > div > div.Card.QuestionInvitation"); //问问题
  164. QRemove("#root > div > main > div > div > div.GlobalSideBar.GlobalSideBar--old > div > div.Sticky.is-fixed > footer"); //脚注
  165. QRemove("#root > div > main > div > div.Question-main > div.Question-sideColumn.Question-sideColumn--sticky"); //右边博主信息
  166. }
  167. //知乎专栏
  168. function zhihuzhuanlan() {
  169. QRemove("#root > div > main > div > div.ColumnPageHeader-Wrapper"); //广告拦截
  170. }
  171. //简书
  172. function jianshu() {
  173. QRemove("#__next > div._3Pnjry"); //左边分享
  174. QRemove("#__next > div._21bLU4._3kbg6I > div > aside"); //右边推广
  175. QRemove("#__next > footer"); //下方评论
  176. QRemove("body > div:nth-child(13)"); //下载推广
  177. }
  178. //百度百科
  179. function baidubaike() {
  180. mustDelete();
  181.  
  182. function mustDelete() {
  183. getByQuerySelector("body > div.header-wrapper.pc-header-new > div > div").style.height = "0px";
  184. QRemove("body > div.lemmaWgt-searchHeader > div > div.tool-buttons"); //滚动之后,顶部右上角工具栏
  185. QRemove("body > div.header-wrapper.pc-header-new > div.topbar.cmn-clearfix"); //顶部百度更多导航内容
  186. QRemove("#searchForm > a.help"); //顶部帮助
  187. QRemove("#J-declare-wrap"); //顶部免责声明
  188. QRemove("body > div.navbar-wrapper"); //头部百科导航都能删除
  189. CRemove("top-tool "); //右上角贴边删除class一次性去除试试?ok!
  190. getByQuerySelector("body > div.body-wrapper > div.content-wrapper > div.content").style.width = "850px"; //中间内容
  191. QRemove("body > div.body-wrapper > div.content-wrapper > div > div.side-content"); //中间侧边内容
  192. QRemove("#side-share"); //中间右边贴边固定分享
  193. QRemove("#tashuo_bottom"); //脚部他说
  194. QRemove("body > div.wgt-footer-main"); //脚部备案
  195. CRemove('edit-icon'); //删除编辑按钮
  196. }
  197.  
  198. if (getByQuerySelector("body > div.body-wrapper.feature.feature_small.custom > div.secondsknow-large-container.J-secondsknow-large-container")) {
  199. console.log("推广百科");
  200. CRemove("edit-lemma"); //编辑
  201. CRemove("lemma-discussion"); //讨论
  202. QRemove("body > div.body-wrapper.feature.feature_small.custom > div.secondsknow-large-container.J-secondsknow-large-container"); //推广秒懂,学慧网
  203. QRemove("#pageTabs"); //中间最上面推广标签
  204. 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,删除不掉导致各种问题,
  205. }
  206.  
  207. if (getByQuerySelector("body > div.body-wrapper > div.content-wrapper > div > div.main-content > span")) {
  208. console.log("科普中国");
  209. QRemove("body > div.body-wrapper > div.before-content"); //秒懂_科普
  210. QRemove("body > div.body-wrapper > div.before-content > div.J-wgt-seconds-know-container"); //秒懂_科普
  211. QRemove("body > div.body-wrapper > div.content-wrapper > div > div.main-content > span"); //专家贡献
  212. QRemove("body > div.body-wrapper > div.content-wrapper > div.content > div.main-content > span.posterFlag.expert-icon"); //专家贡献
  213. QRemove("#hotspotmining_s"); //中间上面推广他说_科普
  214. QRemove("body > div.body-wrapper > div.content-wrapper > div > div.main-content > div.special-topic"); //秒懂_科普
  215. }
  216.  
  217. if (getByQuerySelector("body > div.body-wrapper > div.before-content > div")) {
  218. console.log("普通词条");
  219. CRemove("edit-lemma"); //编辑
  220. CRemove("lemma-discussion"); //讨论
  221. 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"); //上传视频
  222. QRemove("body > div.body-wrapper > div.before-content > div"); //秒懂视频_普通词条
  223. }
  224. //getByQuerySelector("body > div.body-wrapper > div.content-wrapper > div > div.side-content > div.side-catalog").empty()//empty导航目录提取
  225. }
  226. //360doc
  227. /**
  228. * //顶部bar???不知道是否有需求删除
  229. * //转载???无法删除,原因:动态加载
  230. * //vip??????360的js无法加载,原因未明
  231. */
  232. function doc360() {
  233. if (document.querySelector("#bgchange")) document.querySelector("#bgchange").style.width = "1000px"; //外部1000px
  234. if (document.querySelector("#articlecontent > table")) document.querySelector("#articlecontent > table").style.width = "1000px"; //内部1000px
  235.  
  236. //CRemove("header"); //顶部bar???;不知道是否有需求删除;是否需要直接使用搜索框
  237. //QRemove("#zcommondID > span.newbtn_forward"); //转载???无法删除;原因:动态加载;解决方案:1.直接去掉整个工具栏,2.硬要看一下收藏:有待解决
  238. QRemove("#adarttopgoogle"); //vip广告
  239. CRemove("floatqrcode"); //左边二维码
  240. CRemove("a_right"); //右侧返回顶部
  241. QRemove("#goTop2"); //右下角返回顶部
  242.  
  243. //先去除div3一大串东西先
  244. if (document.querySelector("body > div.doc360article_content > div.a_left > div:nth-child(3)").style.width == "676px") {
  245. QRemove("body > div.doc360article_content > div > div:nth-child(3)");
  246. }
  247. QRemove("#bgchange > div.bottom_controler"); //bottom_controler
  248. QRemove("#bgchange > div.prev_next"); //推荐
  249. QRemove("#divtort"); //与我们联系
  250. QRemove("body > div.atfixednav"); //浮动顶部
  251. //异步动态js
  252. QRemove("#registerOrLoginLayer"); //登录(不可用)可以复制
  253. }
  254.  
  255. //segmentfault
  256. function segmentfault() {
  257. CRemove("functional-area-left sticky-top d-none d-xl-flex"); //左侧分享
  258. QRemove("#sf-article > div.row > div.col-12.col-xl-auto"); //右侧广告栏
  259. QRemove("#footer"); //脚注
  260. }
  261.  
  262. //sohu
  263. function sohu() {
  264. QRemove("#main-header"); //顶部
  265. QRemove("#article-container > div.column.left"); //左边
  266. QRemove("#left-bottom-ad");//左下角广告
  267. QRemove("#right-side-bar"); //右边
  268. QRemove("#float-btn"); //右边按钮
  269. QRemove("#backsohucom > span.backword");
  270. QRemove("#article-container > div > div > div > div.statement");
  271. QRemove("#article-container > div > div > div > div.bottom-relate-wrap.clear.type-3");
  272.  
  273. //利用遍历删除所有element,只能用倒序????
  274.  
  275.  
  276. //利用.children[i],test complete
  277. function test01() {
  278. if (getByQuerySelector("#article-container > div.left.main")) {
  279. for (var i = 0, j = 0, len = document.querySelector("#article-container > div.left.main").children.length; i < len; i++) {
  280. //Element.hasAttributes()必定有ture/flase,下次一定要把else写完整
  281. //if (document.querySelector("#article-container > div").children[j].hasAttributes()) {
  282. if (getByQuerySelector("#article-container > div").children[j].attributes[0].value == "content") {
  283. j++;
  284. } else {
  285. getByQuerySelector("#article-container > div").children[j].remove();
  286. //改用CSS3选择器:nth-child,测试好像是不能够更改变量
  287. //document.querySelector("#article-container > div:nth-child(" + j + ")").remove();
  288. }
  289. //} else;
  290. }
  291. }
  292. }
  293.  
  294. test02();
  295. //利用css3:nth.child,test complete
  296. function test02() {
  297. if (getByQuerySelector("#article-container > div.left.main")) {
  298. for (var i = 0, j = 1, len = document.querySelector("#article-container > div.left.main").children.length; i < len; i++) {
  299. //Element.hasAttributes()必定有ture/flase,下次一定要把else写完整
  300. //if (document.querySelector("#article-container > div").children[j].hasAttributes()) {
  301. if (document.querySelector("#article-container > div > div:nth-child(" + j + ")").attributes[0].value == "content") {
  302. j++;
  303. } else {
  304. //getByQuerySelector("#article-container > div").children[j].remove();
  305. //改用CSS3选择器:nth-child,测试好像是不能够更改变量
  306. document.querySelector("#article-container > div > div:nth-child(" + j + ")").remove();
  307. }
  308. //} else;
  309. }
  310. }
  311. }
  312.  
  313. }
  314.  
  315. //判断网页host
  316. switch (host) {
  317. case "blog.csdn.net":
  318. csdn();
  319. break;
  320. case "www.zhihu.com":
  321. zhihu();
  322. break;
  323. case "zhuanlan.zhihu.com":
  324. zhihuzhuanlan();
  325. break;
  326. case "www.jianshu.com":
  327. jianshu();
  328. break;
  329. case "baike.baidu.com":
  330. baidubaike();
  331. break;
  332. case "www.360doc.com":
  333. doc360();
  334. break;
  335. case "segmentfault.com":
  336. segmentfault();
  337. break;
  338. case "csdnnews.blog.csdn.net":
  339. csdn();
  340. break;
  341. case "www.sohu.com":
  342. sohu();
  343. break;
  344. default:
  345. console.log(host + "域名不是文章");
  346. }
  347. }
  348. //延时
  349. //window.onload = function() { setTimeout(paper(), 0); };
  350. //jQuery预载
  351.  
  352. var $ = jQuery.noConflict(true);
  353. //$(document).ready(paper());
  354. paper();
  355. //setTimeout(paper(),10000); //延时一段时间后执行function,只执行一次;
  356. //setInterval(function,5000);//以time为时间间隔,反复执行function。
  357.  
  358. })();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址