Reomve ZhiHu Link Redirect

去除知乎链接的重定向

当前为 2020-03-03 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Reomve ZhiHu Link Redirect
  3. // @namespace https://greasyfork.org/users/20921
  4. // @version 0.2
  5. // @description 去除知乎链接的重定向
  6. // @author roshanca
  7. // @match http://*.zhihu.com/*
  8. // @match https://*.zhihu.com/*
  9. // @icon https://pic1.zhimg.com/2e33f063f1bd9221df967219167b5de0_m.jpg
  10. // @grant none
  11. // ==/UserScript==
  12.  
  13. (function() {
  14. 'use strict';
  15.  
  16. var DOMObserverTimer = null;
  17. var DOMObserverConfig = {
  18. attributes: true,
  19. childList: true,
  20. subtree: true
  21. };
  22. var DOMObserver = new MutationObserver(function () {
  23. if (DOMObserverTimer) {
  24. clearTimeout(DOMObserverTimer);
  25. }
  26. DOMObserverTimer = setTimeout(function () {
  27. DOMObserver.disconnect();
  28. handleLinks();
  29. DOMObserver.observe(document.body, DOMObserverConfig);
  30. }, 100);
  31. });
  32. DOMObserver.observe(document.body, DOMObserverConfig);
  33.  
  34. // first run
  35. handleLinks();
  36.  
  37. // cache
  38. var processedLinks = new WeakMap();
  39.  
  40. var handleLinks = function () {
  41. var allLink = document.querySelectorAll('a.external, a.LinkCard');
  42.  
  43. if (!allLink.length) return;
  44.  
  45. for (var i = 0, len = allLink.length; i < len; i++) {
  46. var link = allLink[i];
  47. if (processedLinks.has(link)) {
  48. continue;
  49. } else {
  50. processedLinks.set(link, 1);
  51. replaceLink(link);
  52. }
  53. }
  54. };
  55.  
  56. var replaceLink = function(link) {
  57. var href = link.href;
  58. var regRet = href.match(/target=(.+?)(&|$)/);
  59. var newHref = href;
  60.  
  61. if (regRet && regRet.length === 3) {
  62. newHref = regRet[1];
  63. }
  64.  
  65. link.href = newHref;
  66. };
  67. })();