您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
取消复制限制;选择题显示序号(最小的几个是答案)
当前为
// ==UserScript== // @name 计蒜客助手 Jisuanke Helper // @namespace http://tampermonkey.net/ // @version 0.1 // @description 取消复制限制;选择题显示序号(最小的几个是答案) // @author yusanshi // @match http://www.jisuanke.com/course/* // @match https://www.jisuanke.com/course/* // @grant none // @run-at document-start // @require https://cdn.jsdelivr.net/gh/colxi/getEventListeners/src/getEventListeners.min.js // ==/UserScript== (function () { 'use strict'; // remove disabled and oncopy attribute continually setInterval(() => { removeCls('jsk-disabled'); ['disabled', 'oncopy', 'oncut'].forEach((elem) => { removeAttr(elem); }) }, 500); // delete line numbers to avoid being copied (it's dirty, // a better approach may exist, like making it unselectable) setInterval(() => { document.querySelectorAll('#hint-content .CodeMirror-linenumber').forEach((elem) => { elem.remove(); }); }, 500); window.onload = () => { // add number prompts for multiple choice problem document.querySelectorAll('[num]').forEach((elem) => { const span = document.createElement('span'); span.style.color = 'green'; span.innerText = elem.getAttribute('num'); elem.insertAdjacentElement('afterbegin', span); }); // remove mousedown document.querySelectorAll('#hint-content .CodeMirror-scroll').forEach((elem) => { customRemoveEventLister(elem, 'mousedown'); }); // remove selectstart document.querySelectorAll('#hint-content .CodeMirror-lines').forEach((elem) => { elem.querySelectorAll('div').forEach((target) => { customRemoveEventLister(target, 'selectstart'); }); }); } function customRemoveEventLister(target, listenerType) { target.getEventListeners(listenerType).forEach((event) => { target.removeEventListener(event.type, event.listener, event.useCapture); }); } function removeCls(cls) { document.querySelectorAll(`.${cls}`).forEach((elem) => { elem.classList.remove(cls); }); } function removeAttr(attr) { document.querySelectorAll(`[${attr}]`).forEach((elem) => { elem.removeAttribute(attr); }); } })();