tab tools

some tools

目前为 2024-08-07 提交的版本。查看 最新版本

  1. // ==UserScript==
  2. // @name tab tools
  3. // @name:zh-CN 标签页小工具
  4. // @namespace http://tampermonkey.net/
  5. // @version 2024年08月07日21:22:05
  6. // @description some tools
  7. // @description:zh-cn 会用到的
  8. // @author onionycs
  9. // @run-at document-start
  10. // @match *://*/*
  11. // @grant GM_registerMenuCommand
  12. // @require http://code.jquery.com/jquery-3.x-git.min.js
  13. // @license MIT
  14. // ==/UserScript==
  15.  
  16.  
  17. (function() {
  18. 'use strict';
  19. /* globals jQuery, $, waitForKeyElements */
  20. GM_registerMenuCommand("折叠目录并伪装", adjustSVISVI);
  21. GM_registerMenuCommand("鸭鸭切换为java", adjustSSPNOTE);
  22. GM_registerMenuCommand("camouflage cooper", faker);
  23. GM_registerMenuCommand("移除标签页所有标题", removeName);
  24.  
  25.  
  26. function removeName() {
  27. var head = document.getElementsByTagName('head')[0];
  28.  
  29. // 获取所有<title>标签
  30. var titles = head.getElementsByTagName('title');
  31.  
  32. // 遍历<title>标签并删除
  33. for (var i = 0; i < titles.length; i++) {
  34. head.removeChild(titles[i]);
  35. }
  36. }
  37.  
  38. function adjustSSPNOTE() {
  39. var $ = unsafeWindow.jQuery;
  40. console.log("start");
  41. $('div[role="combobox"]')[0].click();
  42. var id=$('div[role="combobox"]')[0].id+'-option-2';
  43. setTimeout(function() {
  44. // 这里写你希望延迟执行的代码
  45. console.log('执行了延迟300ms的代码');
  46. $('#'+id)[0].click();
  47. }, 300);
  48. document.getElementsByClassName("left-content")[0].style.width = "40%";
  49. document.getElementsByClassName("right-content")[0].style.width = "60%";
  50. console.log("end");
  51. }
  52.  
  53. function findOnce(){
  54. let aaa = $('.collapsible').filter(function() {
  55. return !$(this).find('.collapsed').length;
  56. }).toArray();
  57. let bbb=[];
  58. let cont=0;
  59. for(let i=0;i<aaa.length;i++){
  60. if(cont<=1 ){
  61. if($(aaa[i]).data('source-level')=='1'){
  62. cont++;
  63. if(cont==2){
  64. break;
  65. }
  66. }
  67. bbb.push(aaa[i]);
  68. }
  69. }
  70. bbb.sort(function(a, b) {
  71. // 使用.data()方法获取每个元素的data-source-level值
  72. // 注意:.data()返回的是数字类型,所以我们可以直接进行比较
  73. var levelA = $(a).data('source-level');
  74. var levelB = $(b).data('source-level');
  75.  
  76. // 如果levelA小于levelB,则返回正数,使levelB排在前面
  77. // 如果levelA大于levelB,则返回负数,使levelA排在前面
  78. // 如果它们相等,则返回0
  79. return levelB - levelA; // 从大到小排序
  80. });
  81. return bbb;
  82. }
  83.  
  84. function adjustSVISVI(){
  85. faker();
  86. if (confirm('确认要折叠目录吗?')) {
  87. //50屏
  88. var ccc;
  89. ccc=findOnce();
  90. while(ccc.length>0){
  91. ccc=findOnce();
  92. $(ccc[0]).find('.catalogue__item-collapse:not(.collapsed)').first().click();
  93. console.error('ccc.length= '+ccc.length+' 折叠了 '+$(ccc[0]).find('.text').text());
  94. }
  95. }
  96. }
  97.  
  98. function faker() {
  99. // 假设新的favicon图标URL是'new-favicon.ico'
  100. var newFaviconUrl = 'https://img-ys011.didistatic.com/static/cooper_cn/ico-dbook.png';
  101. //var newFaviconUrl = 'file:///users/didi/downloads/wiki.ico';
  102.  
  103.  
  104. // 创建一个新的<link>元素
  105. var link = document.createElement('link');
  106. link.type = 'image/x-icon';
  107. link.rel = 'icon';
  108. link.href = newFaviconUrl;
  109.  
  110. // 查找旧的favicon链接(如果有的话),并移除它
  111. // 注意:这里我们假设只有一个favicon链接,或者我们只关心第一个
  112. // 查找并删除所有rel="shortcut icon"的link元素
  113. var links = document.querySelectorAll('link[rel="shortcut icon"]');
  114. links.forEach(function(link) {
  115. link.remove();
  116. });
  117. // 查找并删除所有rel="shortcut icon"的link元素
  118. links= document.querySelectorAll('link[rel="icon"]');
  119. links.forEach(function(link) {
  120. link.remove();
  121. });
  122.  
  123. // 将新的<link>元素添加到<head>部分
  124. var head = document.head || document.getElementsByTagName('head')[0];
  125. head.appendChild(link);
  126.  
  127. // 注意:在有些情况下,浏览器可能不会立即显示新的favicon
  128. // 这取决于浏览器的缓存策略和实现细节
  129.  
  130. removeName();
  131. var myhead = document.head || document.getElementsByTagName('head')[0];
  132. var title = document.createElement('title');
  133. title.textContent='知识库 - Cooper';
  134. myhead.appendChild(title);
  135. }
  136.  
  137. function replaceTextInNode(node, regex, replacement) {
  138. if (node.nodeType === 3) { // Node.TEXT_NODE
  139. node.textContent = node.textContent.replace(regex, replacement);
  140. } else if (node.nodeType === 1) { // Node.ELEMENT_NODE
  141. Array.from(node.childNodes).forEach(child => {
  142. replaceTextInNode(child, regex, replacement);
  143. });
  144. }
  145. }
  146.  
  147. })();