Greasy Fork镜像 支持简体中文。

数据库浏览器导航(截取ajax)

湖南中医药大学图书馆 数据库导航点击链接方法重写

目前為 2025-03-21 提交的版本,檢視 最新版本

  1. // ==UserScript==
  2. // @name 数据库浏览器导航(截取ajax)
  3. // @description 湖南中医药大学图书馆 数据库导航点击链接方法重写
  4. // @icon https://ae01.alicdn.com/kf/Hac1a58055c5047cdb91349e91aa208d5k.jpg
  5. // @author ZK
  6. // @license GPL-3.0-only
  7. // @create 2025-03-21
  8. // @run-at document-end
  9. // @version 1.0.0
  10. // @include https://wisdom.chaoxing.com/newwisdom/doordatabase/*
  11. // @home-url https://gf.qytechs.cn/zh-TW/scripts/14178
  12. // @homepageURL https://gf.qytechs.cn/zh-TW/scripts/14178
  13. // @copyright 2015-2025, AC
  14. // @lastmodified 2025-03-12
  15. // @feedback-url https://github.com/langren1353/GM_script
  16. // @resource baiduCommonStyle https://ibaidu.tujidu.com/newcss/baiduCommonStyle.less?t=27.04
  17. // @resource baiduOnePageStyle https://ibaidu.tujidu.com/newcss/baiduOnePageStyle.less?t=27.04
  18. // @resource baiduTwoPageStyle https://ibaidu.tujidu.com/newcss/baiduTwoPageStyle.less?t=27.04
  19. // @resource googleCommonStyle https://ibaidu.tujidu.com/newcss/googleCommonStyle.less?t=27.04
  20. // @resource googleOnePageStyle https://ibaidu.tujidu.com/newcss/googleOnePageStyle.less?t=27.04
  21. // @resource googleTwoPageStyle https://ibaidu.tujidu.com/newcss/googleTwoPageStyle.less?t=27.04
  22. // @resource bingCommonStyle https://ibaidu.tujidu.com/newcss/bingCommonStyle.less?t=27.04
  23. // @resource bingOnePageStyle https://ibaidu.tujidu.com/newcss/bingOnePageStyle.less?t=27.04
  24. // @resource bingTwoPageStyle https://ibaidu.tujidu.com/newcss/bingTwoPageStyle.less?t=27.04
  25. // @resource duckCommonStyle https://ibaidu.tujidu.com/newcss/duckCommonStyle.less?t=27.04
  26. // @resource duckOnePageStyle https://ibaidu.tujidu.com/newcss/duckOnePageStyle.less?t=27.04
  27. // @resource duckTwoPageStyle https://ibaidu.tujidu.com/newcss/duckTwoPageStyle.less?t=27.04
  28. // @resource dogeCommonStyle https://ibaidu.tujidu.com/newcss/dogeCommonStyle.less?t=27.04
  29. // @resource dogeOnePageStyle https://ibaidu.tujidu.com/newcss/dogeOnePageStyle.less?t=27.04
  30. // @resource dogeTwoPageStyle https://ibaidu.tujidu.com/newcss/dogeTwoPageStyle.less?t=27.04
  31. // @resource haosouCommonStyle https://ibaidu.tujidu.com/newcss/haosouCommonStyle.less?t=27.04
  32. // @resource haosouOnePageStyle https://ibaidu.tujidu.com/newcss/haosouOnePageStyle.less?t=27.04
  33. // @resource haosouTwoPageStyle https://ibaidu.tujidu.com/newcss/haosouTwoPageStyle.less?t=27.04
  34. // @resource HuYanStyle https://ibaidu.tujidu.com/newcss/HuYanStyle.less?t=27.04
  35. // @resource BgAutoFit https://ibaidu.tujidu.com/newcss/BgAutoFit.less?t=27.04
  36. // @resource HuaHua-ACDrakMode https://ibaidu.tujidu.com/newcss/HuaHua-ACDrakMode.less?t=27.04
  37. // @resource baiduLiteStyle https://gitcode.net/-/snippets/1906/raw/master/LiteStyle.css?inline=false
  38. // @require https://cdn.jsdelivr.net/npm/less_browser_fix@4.2.2/dist/less.min.js
  39. // @require https://lib.baomitu.com/vue/3.2.31/vue.runtime.global.prod.min.js
  40. // @require https://lf6-cdn-tos.bytecdntp.com/cdn/expire-10-y/vue/3.2.31/vue.runtime.global.prod.min.js
  41. // @noframes
  42. // @grant GM_getValue
  43. // @grant GM.getValue
  44. // @grant GM_setValue
  45. // @grant GM.setValue
  46. // @grant GM_addStyle
  47. // @grant GM_getResourceURL
  48. // @grant GM_listValues
  49. // @grant GM.getResourceUrl
  50. // @grant GM_xmlhttpRequest
  51. // @grant GM_getResourceText
  52. // @grant GM_registerMenuCommand
  53. // @grant GM_addValueChangeListener
  54. // @grant unsafeWindow
  55. // @namespace 1353464539@qq.com
  56. // ==/UserScript==
  57.  
  58. (function () {
  59. "use strict";
  60.  
  61. // 从当前页面 URL 中提取所需参数
  62. const currentUrl = window.location.href;
  63. console.log(currentUrl, "当前页面链接");
  64. const wfwfidMatch = currentUrl.match(/wfwfid=(\d+)/);
  65. const wfwfid = wfwfidMatch ? wfwfidMatch[1] : null;
  66.  
  67. if (!wfwfid) {
  68. console.log("未能从当前 URL 中提取到必要的参数");
  69. return;
  70. }
  71.  
  72. // 动态生成目标接口地址
  73. const targetUrl = `https://wisdom.chaoxing.com/center/elecresource/resourcedetail/${doorid}.action?source=4&wfwfid=${wfwfid}`;
  74. console.log(targetUrl, "接口链接");
  75.  
  76. // 发送请求并等待响应
  77. GM_xmlhttpRequest({
  78. method: "GET",
  79. url: targetUrl,
  80. onload: function (response) {
  81. console.log(response, "接口数据");
  82. console.log(response.status, "接口状态");
  83. if (response.status === 200) {
  84. // 请求成功,开始监听 DOM 变化
  85. waitForElements("span.link", function (linkElements) {
  86. console.log(linkElements, "元素数据");
  87. if (linkElements.length > 0) {
  88. // 处理第一个 link 元素
  89. const firstLink = linkElements[0];
  90. const firstLinkText = firstLink.textContent;
  91. const openurl = firstLinkText.split("(")[0];
  92. console.log("第一个链接的 openurl:", openurl);
  93. // 删除 onclick 属性
  94. firstLink.removeAttribute("onclick");
  95. // 为第一个 link 元素添加点击事件
  96. firstLink.addEventListener("click", function (event) {
  97. event.stopPropagation(); // 阻止事件冒泡
  98. event.preventDefault(); // 阻止默认行为
  99. window.open(openurl, "_blank"); // 在新窗口打开链接
  100. });
  101.  
  102. if (linkElements.length > 1) {
  103. // 处理第二个 link 元素
  104. const secondLink = linkElements[1];
  105. const secondLinkText = secondLink.textContent;
  106. const url = secondLinkText.split("(")[0];
  107. console.log("第二个链接的 url:", url);
  108. // 删除 onclick 属性
  109. secondLink.removeAttribute("onclick");
  110. // 为第二个 link 元素添加点击事件
  111. secondLink.addEventListener("click", function (event) {
  112. event.stopPropagation(); // 阻止事件冒泡
  113. event.preventDefault(); // 阻止默认行为
  114. window.open(url, "_blank"); // 在新窗口打开链接
  115. });
  116. }
  117. } else {
  118. console.log("未找到 link 元素");
  119. }
  120. });
  121. } else {
  122. console.log("请求接口失败,状态码:", response.status);
  123. }
  124. },
  125. onerror: function (error) {
  126. console.log("请求接口发生错误:", error);
  127. },
  128. });
  129.  
  130. // 等待指定元素出现的函数
  131. function waitForElements(selector, callback) {
  132. console.log(selector, "selector");
  133. const observer = new MutationObserver((mutationsList) => {
  134. console.log(mutationsList, "mutationsList");
  135. for (const mutation of mutationsList) {
  136. if (mutation.type === "childList") {
  137. const elements = document.querySelectorAll(selector);
  138. console.log(elements, "elements");
  139. if (elements.length >= 1) {
  140. observer.disconnect();
  141. callback(elements);
  142. break;
  143. }
  144. }
  145. }
  146. });
  147.  
  148. observer.observe(document.body, { childList: true, subtree: true });
  149. }
  150. })();

QingJ © 2025

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