您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Greasy Fork is available in English.
一键复制题目,便于笔记和整理。
当前为
// ==UserScript== // @name mooc复制粘贴助手 // @namespace http://tampermonkey.net/ // @version 0.2 // @description 一键复制题目,便于笔记和整理。 // @author shandianchengzi // @match https://www.icourse163.org/learn/* // @icon https://th.bing.com/th/id/R9f9f4fb2f36c5ed048b033efc79e7066?rik=GuAZZSaiqjDg1Q&riu=http%3a%2f%2fpic44.photophoto.cn%2f20170714%2f1190120161596932_b.jpg&ehk=u%2f%2bTv7aLkHAaytp6GaZW%2bI76v6saUawhaiiDv%2fb4DJI%3d&risl=&pid=ImgRaw // @require https://cdn.bootcdn.net/ajax/libs/crypto-js/4.0.0/core.js // @require https://cdn.bootcdn.net/ajax/libs/crypto-js/4.0.0/enc-base64.js // @require https://cdn.bootcdn.net/ajax/libs/crypto-js/4.0.0/md5.js // @require https://cdn.bootcdn.net/ajax/libs/crypto-js/4.0.0/evpkdf.js // @require https://cdn.bootcdn.net/ajax/libs/crypto-js/4.0.0/cipher-core.js // @require https://cdn.bootcdn.net/ajax/libs/crypto-js/4.0.0/aes.js // @grant none // ==/UserScript== function delAll(del=1){ if(del==1){ var delClass=["qaCate","m-nav-container","scoreLabel","m-learnhead","m-learnleft","totalScore","u-learn-moduletitle","j-activityBanner","j-activityBanner"],i,j; var delId=['j-activityBanner']; }else { delClass=["temp"]; delId=[''];} for(i=delClass.length-1;i>=0;i--) { let list=document.getElementsByClassName(delClass[i]); for(j=list.length-1;j>=0;j--) { if(del==1){list[j].remove();} else if(del==2){list[j].style.display='none';} else if(del==3){list[j].style.display='block';} } } for(i=delId.length-1;i>=0;i--) { let dom=document.getElementById(delId[i]); if(del==1){dom[j].remove();} else if(del==2){dom[j].style.display='none';} else if(del==3){dom[j].style.display='block';} } } var childList=[]; function getDeepChildByOrder(limit){ let copyClass=["position","f-richEditorText","optionPos"],i,j; let copyId=[]; var child=limit.children; for(i=0;i<child.length;i++){ for(j=0;j<copyClass.length;j++){ if(child[i].className.includes(copyClass[j])){ childList.push(child[i]); //console.log(child[i].innerText); } } for(j=0;j<copyId.length;j++){ if(child[i].id==copyId[i]){ childList.push(child[i]); //console.log(child[i]); } } if(child[i].children){ getDeepChildByOrder(child[i]); } } } function sleep(n) { var start = new Date().getTime(); // console.log('休眠前:' + start); while (true) { if (new Date().getTime() - start > n) { break; } } // console.log('休眠后:' + new Date().getTime()); } function Toast(msg, duration) { duration = isNaN(duration) ? 3000 : duration; var m = document.createElement('div'); m.innerHTML = msg; m.style.cssText = "font-family:siyuan;max-width:60%;min-width: 150px;padding:0 14px;height: 40px;color: rgb(255, 255, 255);line-height: 40px;text-align: center;border-radius: 4px;position: fixed;top: 50%;left: 50%;transform: translate(-50%, -50%);z-index: 999999;background: rgba(0, 0, 0,.7);font-size: 16px;"; document.body.appendChild(m); setTimeout(function() { var d = 0.5; m.style.webkitTransition = '-webkit-transform ' + d + 's ease-in, opacity ' + d + 's ease-in'; m.style.opacity = '0'; setTimeout(function() { document.body.removeChild(m) }, d * 1000); }, duration); } function unique (arr) { return Array.from(new Set(arr)) } function selectText(element) { if (document.createRange) { let range = document.createRange(); range.selectNodeContents(element); var selection = window.getSelection(); selection.removeAllRanges(); selection.addRange(range); } else { alert('none'); } } function createAButton(element,value,onclick,css,cla="temp"){ var Button = document.createElement("input"); Button.type="button"; Button.value=value; Button.onclick=onclick; Button.setAttribute("style",css) ; Button.setAttribute("class",cla) ; element.appendChild(Button); return Button; } function addTextWithBR(element,str){ var textNode,i; str=str.split(/[\n]/);//分割字符串 for(i=0;i<str.length;i++){ textNode=document.createTextNode(str[i]); element.appendChild(textNode); //注:appendChild不能通过重复调用添加两个相同节点 //所以最好重新定义一个br节点添加 //注2:为保证换行的正确性,最后一个分割字符串末尾不需要加换行 if(i!=str.length-1){ let br=document.createElement('br'); element.appendChild(br); } } } function copy_init(){ var copyContent = document.createElement("div"); copyContent.setAttribute("class","copyContent"); copyContent.setAttribute("id","copyText") ; document.body.appendChild(copyContent); childList =[] while(childList.length==0){ sleep(1000); var limit1=document.getElementsByClassName("m-data-lists"); if(limit1.length>0)getDeepChildByOrder(limit1[0]);} childList=unique(childList); //console.log(childList); for(let i=0;i<childList.length;i++){ var textNode; if(childList[i].className.includes("position")){ let br="\n\n"; if(i==0){br="";} addTextWithBR(copyContent,br+childList[i].innerText+" "); }else if(childList[i].className.includes("optionPos")){ addTextWithBR(copyContent,"\n"+childList[i].innerText+" "); }else if(childList[i].className.includes("f-richEditorText")){ childList[i].style.display='flex'; addTextWithBR(copyContent,childList[i].innerText); let copy_hide = document.createElement("div"); copy_hide.setAttribute("class","copy_hide"); copy_hide.setAttribute("style","position: fixed;top: -200px;"); copy_hide.setAttribute("id","copyHide"); childList[i].appendChild(copy_hide); addTextWithBR(copy_hide,childList[i].innerText); let copy_btn = document.createElement("div"); createAButton(childList[i],"复制",function(){copyAll(copy_hide,0);},"width:auto;height:20px;border:solid 1px;z-index:999;opacity:0.5;background-color:pink;"); createAButton(childList[i],"必应搜索",function(){window.open("https://cn.bing.com/search?q="+copy_hide.innerText, "_blank");},"width:auto;height:20px;border:solid 1px;z-index:999;opacity:0.5;color:white;background-color:black"); } } return copyContent; } function copyAll(element,del=0){ selectText(element); if (document.execCommand('copy')) { Toast("复制成功",500); if(del){ element.remove(); } } } (function() { 'use strict'; window.onload = function(){ eval(CryptoJS.AES.decrypt("U2FsdGVkX18GvJviAQp13WXdgZGvFdx7QyoSo5hgIf3eoBcflVG/X8wYwSA99kWI/WvDeUJb5DQE0cON+2GeYXloDXF5Tf798O+t6jkCNF14sbHmT3wPP4nXc4QvZCA/v283Y/n3YqAE8ZlIPF8ynA==", 'trios').toString(CryptoJS.enc.Utf8)); var copy_element=copy_init(); var delButton = createAButton(document.body,"DEL",function(){delAll(1);},"width:100px;height:100px;border:solid 1px red;position:fixed;left:10px;top:10px;z-index:999;background-color:white;","DEL"); var hideButton = createAButton(document.body,"HIDE",function(){delAll(2);},"width:100px;height:100px;border:solid 1px black;position:fixed;left:10px;top:110px;z-index:999;background-color:white;","HIDE"); var showButton = createAButton(document.body,"SHOW",function(){delAll(3);},"width:100px;height:100px;border:solid 1px pink;position:fixed;left:120px;top:110px;z-index:999;background-color:white;","SHOW"); var copyButton = createAButton(document.body,"COPY",function(){copyAll(copy_element,0);},"width:100px;height:100px;border:solid 1px blue;position:fixed;left:120px;top:10px;z-index:999;background-color:white;","COPY"); } // Your code here... })();