Quick debug

Quick inject scripts/style to current page.

  1. // ==UserScript==
  2. // @name Quick debug
  3. // @run-at document-start
  4. // @namespace org.jixun.quick.debug
  5. // @version 1.0.0.2
  6. // @description Quick inject scripts/style to current page.
  7. // @author Jixun
  8. // @include *
  9. // @grant none
  10. // ==/UserScript==
  11.  
  12. (function () {
  13.  
  14. var extend = function (src) {
  15. if (arguments.length <= 1)
  16. return src;
  17.  
  18. var args = [].slice.call(arguments, 1);
  19. for (var i = 0; i<args.length; i++) {
  20. var obj = args[i];
  21.  
  22. for (var key in obj) {
  23. if (!obj.hasOwnProperty (key))
  24. continue;
  25.  
  26. if ('object' == typeof obj[key] && !obj[key].map) {
  27. if (!src[key]) src[key] = {};
  28.  
  29. extend(src[key], obj[key]);
  30. continue;
  31. }
  32.  
  33. src[key] = obj[key];
  34. }
  35. }
  36.  
  37. return src;
  38. };
  39.  
  40. window.QuickDebug = window._QD = function () {
  41. this._QD.script.jQuery();
  42. };
  43.  
  44. extend (window._QD, {
  45. script: function (str) {
  46. var $src = this.script;
  47.  
  48. ( this.isUrl(str)
  49. ? $src.url
  50. : $src.text
  51. ).apply($src, arguments);
  52. },
  53.  
  54. css: function (str) {
  55. var $src = this.css;
  56.  
  57. ( this.isUrl(str)
  58. ? $src.url
  59. : $src.text
  60. ).apply($src, arguments);
  61. },
  62.  
  63. isUrl: function (str) {
  64. return /^(https?\:\/\/|\.|\/)/.test(str);
  65. }
  66. });
  67.  
  68. extend(window._QD.script, {
  69. url: function (url, ver, onload) {
  70. var s = document.createElement('script');
  71. url = url.replace('%ver', ver);
  72.  
  73. s.src = url;
  74. s.onload = function () {
  75. console.info ('Script loaded: %s', url);
  76.  
  77. onload && onload();
  78. };
  79. document.head.appendChild(s);
  80. },
  81.  
  82. text: function (text) {
  83. var s = document.createElement('script');
  84. s.textContent = text;
  85. document.head.appendChild(s);
  86. },
  87.  
  88. jQuery: function (ver) {
  89. this.url ('https://code.jquery.com/jquery-%ver.js', ver || 'latest');
  90. },
  91.  
  92. vue: function (ver) {
  93. this.url ('https://cdnjs.cloudflare.com/ajax/libs/vue/%ver/vue.js', ver || '0.11.4');
  94. },
  95.  
  96. bootstrap: function (ver) {
  97. if (!window.jQuery) this.jQuery();
  98.  
  99. this.url ('https://maxcdn.bootstrapcdn.com/bootstrap/%ver/css/bootstrap.min.css', ver || '3.3.1');
  100. },
  101.  
  102. mathJax: function (config) {
  103. this.url ('https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=%ver',
  104. config || 'TeX-AMS-MML_HTMLorMML');
  105. }
  106. });
  107.  
  108. extend(window._QD.css, {
  109. url: function (url, ver, onload) {
  110. var s = document.createElement('link');
  111. url = url.replace('%ver', ver);
  112.  
  113. s.rel = 'stylesheet';
  114. s.href = url;
  115. s.onload = function () {
  116. console.info ('Style loaded: %s', url);
  117.  
  118. onload && onload();
  119. };
  120. document.head.appendChild(s);
  121. },
  122.  
  123. text: function (text) {
  124. var s = document.createElement('style');
  125. s.textContent = text;
  126. document.head.appendChild(s);
  127. },
  128.  
  129. bootstrap: function (ver) {
  130. this.url ('https://maxcdn.bootstrapcdn.com/bootstrap/%ver/css/bootstrap.min.css', ver || '3.3.1');
  131. }
  132. });
  133.  
  134.  
  135. })();

QingJ © 2025

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