Github超链接跳转——CatJump

给Github各个超链接添加 target=_blank 属性

目前为 2018-08-04 提交的版本。查看 最新版本

  1. // ==UserScript==
  2. // @name Github超链接跳转——CatJump
  3. // @namespace https://github.com/yhyzgn/CatJump
  4. // @version 0.0.3
  5. // @description 给Github各个超链接添加 target=_blank 属性
  6. // @author yhyzgn
  7. // @match *://github.com/*
  8. // @grant none
  9. // ==/UserScript==
  10.  
  11. (function() {
  12. 'use strict';
  13.  
  14. function C(arg) {
  15. return new Cat(arg);
  16. }
  17.  
  18. function Cat(arg) {
  19. this.elements = [];
  20.  
  21. if (typeof arg === "function") {
  22. this.ready(arg);
  23. } else if (typeof arg === "string") {
  24. this.elements = document.getElementsByTagName(arg);
  25. } else if (typeof arg === "object" && arg !== undefined) {
  26. this.elements.push(arg);
  27. }
  28. }
  29.  
  30. Cat.prototype = {
  31. ready: function(fn) {
  32. if (document.readyState === "interactive" || document.readyState === "complete") {
  33. setTimeout(fn, 1);
  34. } else {
  35. this.evt(document, "DOMContentLoaded", fn);
  36. }
  37. return this;
  38. },
  39. length: function() {
  40. return this.elements.length;
  41. },
  42. get: function(index) {
  43. if (index === undefined) {
  44. return this.elements;
  45. }
  46. if (index < 0 || index >= this.length()) {
  47. return null;
  48. }
  49. return this.elements[index];
  50. },
  51. attr: function() {
  52. if (arguments.length === 1) {
  53. if (typeof arguments[0] === "object") {
  54. // 设置attr
  55. for (var i = 0; i < this.elements.length; i++) {
  56. for (var key in arguments[0]) {
  57. this.elements[i].setAttribute(key, arguments[0][key]);
  58. }
  59. }
  60. } else {
  61. // 获取attr
  62. return this.elements[0].getAttribute(arguments[0]);
  63. }
  64. } else {
  65. // 设置attr
  66. for (var j = 0; j < this.elements.length; j++) {
  67. this.elements[j].setAttribute(arguments[0], arguments[1]);
  68. }
  69. }
  70. return this;
  71. },
  72. evt: function(element, evt, fn) {
  73. element.addEventListener(evt, fn, false);
  74. return this;
  75. }
  76. };
  77.  
  78. window.C = C;
  79.  
  80. C(function() {
  81. var all = [];
  82.  
  83. setInterval(function() {
  84. var as = C("a");
  85. var href;
  86. for (var i = 0; i < as.length(); i++) {
  87. href = C(as.get(i)).attr("href");
  88. if (href && href !== "/" && href !== && href.indexOf("javascript:") === -1 && href.indexOf("#") !== 0) {
  89. if (all.indexOf(as.get(i)) > -1 && C(as.get(i)).attr("target") === "_blank") {
  90. continue;
  91. }
  92. C(as.get(i)).attr({
  93. "target": "_blank"
  94. });
  95. all.push(as.get(i));
  96. }
  97. }
  98. }, 200);
  99. });
  100. })();

QingJ © 2025

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