Greasy Fork镜像 支持简体中文。

网课大全助手

支持【超星学习通】【智慧树】【职教云系列】【雨课堂】【考试星】【168网校】【u校园】【大学MOOC】【云班课】【优慕课】【继续教育类】【绎通云课堂】【九江系列】【柠檬文才】【亿学宝云】【优课学堂】【小鹅通】【安徽继续教育】【上海开放大学】【华侨大学自考网络助学平台】【良师在线】【和学在线】【人卫慕课】【国家开放大学】【山财培训网】【浙江省高等学校在线开放课程共享平台】【国地质大学远程与继续教育学院】【重庆大学网络教育学院】【浙江省高等教育自学考试网络助学平台】【湖南高等学历继续教育】【优学院】【学起系列】【青书学堂】【学堂在线】【英华学堂】【广开网络教学平台】等,内置题库功能。如您遇到问题,请联系QQ群:565124317 邀请码为6666 系统兼容多种学习平台,支持一键搜题,提升学习效率。新增AI搜题、(如ChatGPT)技术,打破不可复制文本限制。,脚本不收集任何个人信息,确保用户隐私安全。无论是学习、复习备考,还是在线课程,本系统都能提供有效支持,使学习高效轻松。使用本系统,您将能够获取所需学习资源,提升学习效率,取得更好成绩。感谢您对本系统的信任与支持

  1. // ==UserScript==
  2. // @name 网课大全助手
  3. // @version 1.02
  4. // @description 支持【超星学习通】【智慧树】【职教云系列】【雨课堂】【考试星】【168网校】【u校园】【大学MOOC】【云班课】【优慕课】【继续教育类】【绎通云课堂】【九江系列】【柠檬文才】【亿学宝云】【优课学堂】【小鹅通】【安徽继续教育】【上海开放大学】【华侨大学自考网络助学平台】【良师在线】【和学在线】【人卫慕课】【国家开放大学】【山财培训网】【浙江省高等学校在线开放课程共享平台】【国地质大学远程与继续教育学院】【重庆大学网络教育学院】【浙江省高等教育自学考试网络助学平台】【湖南高等学历继续教育】【优学院】【学起系列】【青书学堂】【学堂在线】【英华学堂】【广开网络教学平台】等,内置题库功能。如您遇到问题,请联系QQ群:565124317 邀请码为6666 系统兼容多种学习平台,支持一键搜题,提升学习效率。新增AI搜题、(如ChatGPT)技术,打破不可复制文本限制。,脚本不收集任何个人信息,确保用户隐私安全。无论是学习、复习备考,还是在线课程,本系统都能提供有效支持,使学习高效轻松。使用本系统,您将能够获取所需学习资源,提升学习效率,取得更好成绩。感谢您对本系统的信任与支持
  5. // @author peng
  6. // @match *://*.mosoteach.cn/*
  7. // @match *://*.chaoxing.com/*
  8. // @match *://*.xueyinonline.com/*
  9. // @match *://*.edu.cn/*
  10. // @match *://*.ouchn.cn/*
  11. // @match *://*.nbdlib.cn/*
  12. // @match *://*.hnsyu.net/*
  13. // @match *://*.gdhkmooc.com/*
  14. // @match *://*.zhihuishu.com/*
  15. // @match *://*.icve.com.cn/*
  16. // @match *://*.yuketang.cn/*
  17. // @match *://v.met0.top/*
  18. // @match *://*.icourse163.org/*
  19. // @match *://*.xuetangx.com/*
  20.  
  21. // @namespace https://a.pengzi.cc/
  22. // @supportURL https://a.pengzi.cc/
  23. // @icon https://a.pengzi.cc/assets/images/2.webp
  24. // @require https://code.jquery.com/jquery-3.6.0.js
  25. // @grant GM_getValue
  26. // @grant GM_addStyle
  27. // @grant unsafeWindow
  28. // @license MIT
  29. // @supportURL https://gf.qytechs.cn/zh-CN/scripts/428114
  30. // @homepage https://gf.qytechs.cn/zh-CN/scripts/428114
  31. // @antifeature membership
  32. // @antifeature ads
  33. // @connect 127.0.0.1
  34. // @connect *
  35. // ==/UserScript==
  36. (function(_this) {
  37.  
  38.  
  39. function MyPage(menu) {
  40.  
  41. this.aner = null;
  42. this.version = "5.2";
  43. this.$ = $;
  44. this.menu = menu;
  45. this.config = this.urlToObject(window.location.href);
  46. this.api = this.getAPI(this.config.hostname);
  47. this.config.tk_uid = null;
  48. this.initMenu();
  49. // this.initVue();
  50. return this;
  51. }
  52. MyPage.prototype.urlToObject = function(url) {
  53. let obj = {};
  54. let arr1 = url.split("?");
  55. obj["front_url"] = arr1[0].split("/");
  56. if (url.includes('mooc.mosoteach.cn')) {
  57. obj.hostname = "mooc.mosoteach";
  58. } else if (url.includes('mosoteach.cn')) {
  59. obj.hostname = "mosoteach";
  60. } else if (url.includes("zhihuishu.com")) {
  61. obj.hostname = "zhihuishu";
  62. } else if (url.includes("icve.com.cn")) {
  63. obj.hostname = "icve";
  64. } else if (url.includes("met0.top")) {
  65. obj.hostname = "meto";
  66. } else if (url.includes("ouchn.cn")) {
  67. obj.hostname = "ouchn";
  68. } else if (url.includes("chaoxing.com")) {
  69. obj.hostname = "chaoxing";
  70. } else if (url.includes("yuketang.cn")) {
  71. obj.hostname = "yuketang";
  72. } else if (url.includes("icourse163")) {
  73. obj.hostname = "mooc";
  74. } else if (url.includes("unipus.cn")) {
  75. obj.hostname = "uschool";
  76. } else if (url.includes("xuetangx.com")) {
  77. obj.hostname = "xuetangx";
  78. }
  79.  
  80. if (arr1[1]) {
  81. let arr2 = arr1[1].split("&");
  82. for (let i = 0; i < arr2.length; i++) {
  83. let res = arr2[i].split("=");
  84. obj[res[0]] = res[1];
  85. }
  86. }
  87. return obj;
  88. }
  89. MyPage.prototype.getAPI = function(hostname) {
  90. switch (hostname) {
  91. case "mooc.mosoteach":
  92. console.log("精品云班课脚本准备中");
  93. return new jpyunbanke_api(this.config);
  94. case "mosoteach":
  95. console.log("云班课脚本准备中");
  96. return new yunbanke_api(this.config);
  97. case "zhihuishu":
  98. console.log("智慧树脚本准备中");
  99. return new zhihuishu_api(this.config);
  100. case "icve":
  101. console.log("智慧职教脚本准备中");
  102. return new icve_api(this.config);
  103. case "meto":
  104. console.log("meto脚本准备中");
  105. return new meto_api(this.config);
  106. case "ouchn":
  107. console.log("国开脚本准备中");
  108. return new ouchn_api(this.config);
  109. case "chaoxing":
  110. console.log("超星脚本准备中");
  111. return new chaoxin_api(this.config);
  112. case "yuketang":
  113. console.log("雨课堂脚本准备中");
  114. return new yuketang_api(this.config);
  115. case "mooc":
  116. console.log("慕课脚本准备中");
  117. return new mooc_api(this.config);
  118. case "uschool":
  119. console.log("U校园脚本准备中");
  120. return new uschool_api(this.config);
  121. case "xuetangx":
  122. console.log("学堂在线脚本准备中");
  123. return new xuetangx_api(this.config);
  124. default:
  125. return null;
  126. }
  127. };
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. /*
  137. * u校园请求
  138. */
  139. class uschool_api {
  140. constructor(config) {
  141. this.config = config;
  142. }
  143.  
  144.  
  145. }
  146. /*
  147. * 学堂在线请求
  148. */
  149.  
  150. class xuetangx_api {
  151. constructor(config) {
  152. this.config = config;
  153. }
  154.  
  155.  
  156. }
  157. /*
  158. * mooc请求
  159. */
  160. class mooc_api {
  161. constructor(config) {
  162. this.config = config;
  163. }
  164. }
  165.  
  166. /*
  167. * 雨课堂请求
  168. */
  169. class yuketang_api {
  170. constructor(config) {
  171. this.config = config;
  172. }
  173.  
  174. }
  175. /*
  176. * 超星请求
  177. */
  178. class chaoxin_api {
  179. constructor(config) {
  180. this.config = config;
  181. }
  182.  
  183.  
  184.  
  185. }
  186.  
  187. /*
  188. * 国开请求
  189. */
  190. class ouchn_api {
  191. constructor(config) {
  192. this.config = config;
  193. }
  194.  
  195.  
  196. sleep = (delay) => new Promise((resolve) => setTimeout(resolve, delay))
  197.  
  198. }
  199. /*
  200. * meto请求
  201. */
  202. class meto_api {
  203. constructor(config) {
  204. this.config = config;
  205. }
  206.  
  207.  
  208. }
  209. /*
  210. * 智慧职教请求
  211. */
  212. class icve_api {
  213. constructor(config) {
  214. this.config = config;
  215. }
  216.  
  217.  
  218. }
  219. /*
  220. * 智慧树请求
  221. */
  222. class zhihuishu_api {
  223. sleep = (delay) => new Promise((resolve) => setTimeout(resolve, delay))
  224. constructor(config) {
  225. this.config = config;
  226.  
  227. }
  228. }
  229. /*
  230. * 精品云班课请求
  231. */
  232. class jpyunbanke_api {
  233. constructor(config) {
  234. this.config = config;
  235. }
  236.  
  237. }
  238.  
  239.  
  240. /*
  241. * 云班课请求
  242. */
  243. class yunbanke_api {
  244. constructor(config) {
  245. this.config = config;
  246. }
  247.  
  248.  
  249.  
  250. }
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257. // 鼠标拖动样式
  258.  
  259.  
  260. MyPage.prototype.arrowMove = function(e) {
  261. // var e = document.getElementById(e);
  262. // 元素大小
  263. let elW = e.currentTarget.offsetWidth
  264. let elH = e.currentTarget.offsetHeight
  265. // 元素位置
  266. let elL = e.currentTarget.parentNode.parentNode.offsetLeft
  267. let elT = e.currentTarget.parentNode.parentNode.offsetTop
  268. // 鼠标位置
  269. let x = e.clientX
  270. let y = e.clientY
  271. // 窗口大小
  272. let w = window.innerWidth
  273. let h = window.innerHeight
  274. // 鼠标到元素左边距离
  275. let moveX = x - elL
  276. let moveY = y - elT
  277. let el = e.currentTarget
  278. document.onmousemove = function(e) {
  279. // el.style.position = 'fixed';
  280. el.parentNode.parentNode.style.left = e.clientX - moveX + 'px'
  281. el.parentNode.parentNode.style.top = e.clientY - moveY + 'px'
  282. }
  283. document.onmouseup = function(e) {
  284. document.onmousemove = null
  285. document.onmouseup = null
  286. }
  287. };
  288.  
  289. MyPage.prototype.initMenu = function() {
  290. let $ = this.$,
  291. menu = this.menu;
  292. $(document).on('mousedown', '#x_set', function(e) {
  293. window.my.arrowMove(e); //.target.parentNode.id
  294. });
  295. $(document).on('click', '#x_start', function() {
  296. window.my.start();
  297. });
  298. $(document).on('click', '#x_set', function() {
  299. $('html').find("#set").toggle('active');
  300. $('html').find("#aner").hide("slow");
  301. });
  302.  
  303.  
  304. //按f2显示或隐藏#x_set菜单
  305. $(document).on('keydown', function(e) {
  306. if (e.key === '*') {
  307. if ($('#x_set').is(':visible')) {
  308. $('#wzq').hide();
  309. $('#x_set').hide();
  310. alert("隐藏菜单");
  311. } else {
  312. $('#wzq').show();
  313. $('#x_set').show();
  314. alert("显示菜单");
  315. }
  316. }
  317. });
  318.  
  319.  
  320. /**
  321. * MosoteachHelper CSS
  322. */
  323. const styleTag = `
  324. <style scoped>
  325. #${menu.id} #zhu button[disabled]{
  326. color: white !important;
  327. background-color: rgb(188, 188, 188) !important;
  328. }
  329. #${menu.id} #zhu button{
  330. float:left;
  331. margin:25px 2px;
  332. /* 把按钮撑大 */
  333. padding: 4px 8px;
  334. /* 去除默认边框 */
  335. border: none;
  336. /* 圆角 */
  337. border-radius: 50px;
  338. /* 按钮背景色 */
  339. background-color: #8888ff;
  340. /* 字体颜色、大小、粗细、字间距 */
  341. color: #fff;
  342. font-size: 12px;
  343. font-weight: bold;
  344. letter-spacing: 1px;
  345. /* 鼠标小手 */
  346. cursor: pointer;
  347.  
  348. /* 给个定位 */
  349. position: relative;
  350. /* 3D模式 */
  351. transform-style: preserve-3d;
  352. /* 过度动画时间 */
  353. transition: ease-in-out 2s;
  354. }
  355. #${menu.id} #zhu button:hover {
  356. /* 鼠标放上来旋转一圈 */
  357. transform: rotateX(360deg);
  358. }
  359. #${menu.id} #zhu button::before,
  360. #${menu.id} #zhu button:after {
  361. content: "";
  362. /* 白色边框线 */
  363. border: 0.8px solid #fff;
  364. /* 圆角 */
  365. border-radius: 50px;
  366.  
  367. /* 通过定位来撑开边框,简单来说,确定4边的距离,中间自然就固定了 */
  368. position: absolute;
  369. top: 1px;
  370. left: 1px;
  371. right: 1px;
  372. bottom: 1px;
  373.  
  374. /* 3D模式 */
  375. transform-style: preserve-3d;
  376. /* 设置透视参数,向 Z轴方向移动,正常时候就是向屏幕外面移动 */
  377. transform: perspective(1000px) translateZ(5px);
  378. }
  379. #${menu.id} #zhu button::after {
  380. /* 另一边反着移动一下 */
  381. transform: perspective(1000px) translateZ(-5px);
  382. }
  383. #${menu.id} #zhu button span {
  384. /* 设置 span 为块元素 */
  385. display: flex;
  386.  
  387. /* 3D模式 */
  388. transform-style: preserve-3d;
  389. /* 同样设置透视,抬高 Z轴距离 */
  390. transform: perspective(500px) translateZ(8px);
  391. }
  392. #${menu.id}{
  393. font-size:14px;
  394. z-index: 9999;
  395. text-align:center;
  396. position:fixed;
  397. pointer-events: none;
  398. left:${menu.pos.x}px;
  399. top:${menu.pos.y}px;
  400. }
  401. #${menu.id} #zhu{
  402. pointer-events: visible;
  403. }
  404. #${menu.id} .drawer{
  405. height:550px;
  406. pointer-events: visible;
  407. position:relative;
  408. overflow:auto;
  409. text-align:left;
  410. display: none;
  411. background: #fff;
  412. border-radius: 20px;
  413. box-shadow: 0 5px 15px rgba(0,0,0,0.2);
  414. width: 400px; /* initially */
  415. z-index: 199;
  416. padding:3px;
  417. margin:10px;
  418. }
  419. #${menu.id} .drawer iframe{
  420. width: 400px;
  421. height: 100%;
  422. border: none; /* 去除 iframe 边框 */
  423. }
  424. #${menu.id} p{
  425. text-align:left;
  426. padding-left:5px;
  427. }
  428. #${menu.id} .drawer input{
  429. border-radius: 3px;
  430. border: 1px solid;
  431. width:50%;
  432. }
  433. #${menu.id} .drawer button{
  434. display:inline;
  435. vertical-align:middle;
  436. border: 1px solid;
  437. background-color: transparent;
  438. text-transform: uppercase;
  439. padding: 1px 2px;
  440. font-weight: 300;
  441. }
  442. #${menu.id} .drawer button:hover {
  443. color: white;
  444. border: 0;
  445. background-color: #4cc9f0;
  446. box-shadow: 10px 10px 99px 6px rgba(76,201,240,1);
  447. }
  448. #${menu.id} #x_set{
  449. animation: change 3s linear 0s infinite;
  450. float:left;
  451. position:relative;
  452. z-index: 999999;
  453. margin:10px;
  454. border-radius:50%;
  455. overflow:hidden;
  456. height: 30px;
  457. width: 30px;
  458. border: solid 2px #00f6ffc2;
  459. background: url(${GM_getValue("userimg") ? GM_getValue("userimg"):"https://a.pengzi.cc/assets/images/2.webp"});
  460. background-size: 30px 30px;
  461. }
  462. @keyframes change {
  463. 0%{box-shadow: 0 0 4px #f00;}
  464. 25%{box-shadow: 0 0 16px #0f0;}
  465. 50%{box-shadow: 0 0 4px #00f;}
  466. 75%{box-shadow: 0 0 16px #0f0;}
  467. 100% {box-shadow: 0 0 4px#333;}
  468. }
  469.  
  470. /* 自定义滚动条样式 */
  471. #${menu.id} .drawer::-webkit-scrollbar {
  472. width: 10px;
  473. }
  474. #${menu.id} .drawer::-webkit-scrollbar-thumb {
  475. background-color: #a1c4fd;
  476. background-image: -webkit-linear-gradient(45deg, rgba(194,233,251, 1) 15%, transparent 25%, transparent 50%, rgba(194,233,251, 1) 50%, rgba(194,233,251, 1) 75%, transparent 75%, transparent);
  477. }
  478. #${menu.id} .drawer::-webkit-scrollbar-track {
  479. box-shadow: inset 0 0 5px rgba(0,0,0,0.2);
  480. background: #f6f6f6;
  481. }
  482. </style>`;
  483.  
  484. $(styleTag).appendTo('head');
  485. let $menu = $(
  486. `
  487. <div id='${menu.id}'>
  488. <div id ="zhu">
  489. <div id="x_set"></div>
  490. </div>
  491. <div class= "drawer" id="set">
  492. <iframe class="iframe" src="https://a.pengzi.cc/" style=" height:100%;"></iframe>
  493. </div>
  494. <div class= "drawer" id="aner">
  495. </div>
  496. </div>`);
  497.  
  498. $($menu).appendTo('html');
  499. this.aner = $('#aner');
  500.  
  501.  
  502.  
  503. }
  504.  
  505.  
  506.  
  507. _this.MyPage = MyPage;
  508. })(unsafeWindow || window);
  509.  
  510. if (window.location == window.parent.location) { // 判断是否为ifarm
  511. window.my = new unsafeWindow.MyPage({
  512. id: "wzq",
  513. width: 80,
  514. background: '#fff',
  515. opacity: 0.8,
  516. pos: {
  517. x: 100,
  518. y: 100
  519. }
  520. })
  521. }
  522.  
  523.  
  524.  
  525.  
  526. (function() {
  527. 'use strict';
  528.  
  529. // 域名规则列表
  530. var rules = {
  531. black_rule: {
  532. name: "black",
  533. hook_eventNames: "",
  534. unhook_eventNames: ""
  535. },
  536. default_rule: {
  537. name: "default",
  538. hook_eventNames: "contextmenu|select|selectstart|copy|cut|dragstart",
  539. unhook_eventNames: "mousedown|mouseup|keydown|keyup",
  540. dom0: true,
  541. hook_addEventListener: true,
  542. hook_preventDefault: true,
  543. hook_set_returnValue: true,
  544. add_css: true
  545. }
  546. };
  547. // 域名列表
  548. var lists = {
  549. // 黑名单
  550. black_list: [
  551. /.*\.youtube\.com.*/,
  552. /.*\.wikipedia\.org.*/,
  553. /mail\.qq\.com.*/,
  554. /translate\.google\..*/
  555. ]
  556. };
  557.  
  558. // 要处理的 event 列表
  559. var hook_eventNames, unhook_eventNames, eventNames;
  560. // 储存名称
  561. var storageName = getRandStr('qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM', parseInt(Math.random() *
  562. 12 + 8));
  563. // 储存被 Hook 的函数
  564. var EventTarget_addEventListener = EventTarget.prototype.addEventListener;
  565. var document_addEventListener = document.addEventListener;
  566. var Event_preventDefault = Event.prototype.preventDefault;
  567.  
  568. // Hook addEventListener proc
  569. function addEventListener(type, func, useCapture) {
  570. var _addEventListener = this === document ? document_addEventListener : EventTarget_addEventListener;
  571. if (hook_eventNames.indexOf(type) >= 0) {
  572. _addEventListener.apply(this, [type, returnTrue, useCapture]);
  573. } else if (this && unhook_eventNames.indexOf(type) >= 0) {
  574. var funcsName = storageName + type + (useCapture ? 't' : 'f');
  575.  
  576. if (this[funcsName] === undefined) {
  577. this[funcsName] = [];
  578. _addEventListener.apply(this, [type, useCapture ? unhook_t : unhook_f, useCapture]);
  579. }
  580.  
  581. this[funcsName].push(func);
  582. } else {
  583. _addEventListener.apply(this, arguments);
  584. }
  585. }
  586.  
  587. // 清理循环
  588. function clearLoop() {
  589. var elements = getElements();
  590.  
  591. for (var i in elements) {
  592. for (var j in eventNames) {
  593. var name = 'on' + eventNames[j];
  594. if (elements[i][name] !== null && elements[i][name] !== onxxx) {
  595. if (unhook_eventNames.indexOf(eventNames[j]) >= 0) {
  596. elements[i][storageName + name] = elements[i][name];
  597. elements[i][name] = onxxx;
  598. } else {
  599. elements[i][name] = null;
  600. }
  601. }
  602. }
  603. }
  604. }
  605.  
  606. // 返回true的函数
  607. function returnTrue(e) {
  608. return true;
  609. }
  610.  
  611. function unhook_t(e) {
  612. return unhook(e, this, storageName + e.type + 't');
  613. }
  614.  
  615. function unhook_f(e) {
  616. return unhook(e, this, storageName + e.type + 'f');
  617. }
  618.  
  619. function unhook(e, self, funcsName) {
  620. var list = self[funcsName];
  621. for (var i in list) {
  622. list[i](e);
  623. }
  624.  
  625. e.returnValue = true;
  626. return true;
  627. }
  628.  
  629. function onxxx(e) {
  630. var name = storageName + 'on' + e.type;
  631. this[name](e);
  632.  
  633. e.returnValue = true;
  634. return true;
  635. }
  636.  
  637. // 获取随机字符串
  638. function getRandStr(chs, len) {
  639. var str = '';
  640.  
  641. while (len--) {
  642. str += chs[parseInt(Math.random() * chs.length)];
  643. }
  644.  
  645. return str;
  646. }
  647.  
  648. // 获取所有元素 包括document
  649. function getElements() {
  650. var elements = Array.prototype.slice.call(document.getElementsByTagName('*'));
  651. elements.push(document);
  652.  
  653. return elements;
  654. }
  655.  
  656. // 添加css
  657. function addStyle(css) {
  658. var style = document.createElement('style');
  659. style.innerHTML = css;
  660. document.head.appendChild(style);
  661. }
  662.  
  663. // 获取目标域名应该使用的规则
  664. function getRule(url) {
  665. function testUrl(list, url) {
  666. for (var i in list) {
  667. if (list[i].test(url)) {
  668. return true;
  669. }
  670. }
  671.  
  672. return false;
  673. }
  674.  
  675. if (testUrl(lists.black_list, url)) {
  676. return rules.black_rule;
  677. }
  678.  
  679. return rules.default_rule;
  680. }
  681.  
  682. // 初始化
  683. function init() {
  684. // 获取当前域名的规则
  685. var url = window.location.host + window.location.pathname;
  686. var rule = getRule(url);
  687.  
  688. // 设置 event 列表
  689. hook_eventNames = rule.hook_eventNames.split("|");
  690. // TODO Allowed to return value
  691. unhook_eventNames = rule.unhook_eventNames.split("|");
  692. eventNames = hook_eventNames.concat(unhook_eventNames);
  693.  
  694. // 调用清理 DOM0 event 方法的循环
  695. if (rule.dom0) {
  696. setInterval(clearLoop, 30 * 1000);
  697. setTimeout(clearLoop, 2500);
  698. window.addEventListener('load', clearLoop, true);
  699. clearLoop();
  700. }
  701.  
  702. // hook addEventListener
  703. if (rule.hook_addEventListener) {
  704. EventTarget.prototype.addEventListener = addEventListener;
  705. document.addEventListener = addEventListener;
  706. }
  707.  
  708. // hook preventDefault
  709. if (rule.hook_preventDefault) {
  710. Event.prototype.preventDefault = function() {
  711. if (eventNames.indexOf(this.type) < 0) {
  712. Event_preventDefault.apply(this, arguments);
  713. }
  714. };
  715. }
  716.  
  717. // Hook set returnValue
  718. if (rule.hook_set_returnValue) {
  719. Event.prototype.__defineSetter__('returnValue', function() {
  720. if (this.returnValue !== true && eventNames.indexOf(this.type) >= 0) {
  721. this.returnValue = true;
  722. }
  723. });
  724. }
  725.  
  726. console.debug('url: ' + url, 'storageName:' + storageName, 'rule: ' + rule.name);
  727.  
  728. // 添加CSS
  729. if (rule.add_css) {
  730. addStyle('html, * {-webkit-user-select:text!important; -moz-user-select:text!important;}');
  731. }
  732. }
  733.  
  734. init();
  735. })();
  736.  
  737.  

QingJ © 2025

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