您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
storehouse
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.cn-greasyfork.org/scripts/496824/1387535/hnrcscExam.js
(function() { 'use strict'; /* globals jQuery, $, waitForKeyElements */ unsafeWindow.GM_getValue = GM_getValue unsafeWindow.GM_deleteValue = GM_deleteValue unsafeWindow.GM_xmlhttpRequest = GM_xmlhttpRequest // 检查当前窗口是否为顶层窗口 if (window.self === window.top) { if(window.location.href.split('?')[0].toString() != 'https://admin.hnpxw.org/learner/examine/openPaper.do'){ return;// 如果是顶层窗口,则不执行脚本 } } // 创建一个新的 script 标签 var script = document.createElement('script'); script.textContent = 'console.log("Script injected by Tampermonkey!");'; // 将 script 标签插入到页面的 head 中 document.head.appendChild(script); let btn1=GM_registerMenuCommand ("\u4f5c\u8005\uff1a\ud83c\udf49\u897f\u74dc\u8981\u5927\u7684\ud83c\udf49", function(){ confirm("Hello,\u611f\u8c22\u4f7f\u7528\ud83c\udf49\u897f\u74dc\u5237\u8bfe\u52a9\u624b\ud83c\udf49\uff01\u591a\u591a\u53cd\u9988\u54e6"); GM_unregisterMenuCommand(btn1); }, ""); let btn2=GM_registerMenuCommand ("\u4ed8\u8d39\u5185\u5bb9", function(){ alert("\u9650\u65f6\u514d\u8d39\uff0c\u5168\u529b\u5f00\u53d1\u4e2d..."); }, "p"); var ddds3 = null; var addMessage = null; const panel = function(){ var container = $('<div id="gm-interface"></div>'); var titleBar = $('<div id="gm-title-bar">\ud83c\udf49\u897f\u74dc\u7f51\u8bfe\u52a9\u624b\ud83c\udf49</div>'); var minimizeButton = $('<div title="\u6536\u8d77" style="display:black"><svg id="gm-minimize-button" class="bi bi-dash-square" viewBox="0 0 16 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M14 1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z"/><path fill-rule="evenodd" d="M3.5 8a.5.5 0 0 1 .5-.5h8a.5.5 0 0 1 0 1H4a.5.5 0 0 1-.5-.5z"/></svg></div>'); var maxButton = $('<div title="\u5c55\u5f00" style="display:none"><svg id="gm-minimize-button" class="bi bi-plus-square" viewBox="0 0 16 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M8 3.5a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5H4a.5.5 0 0 1 0-1h3.5V4a.5.5 0 0 1 .5-.5z"/><path fill-rule="evenodd" d="M7.5 8a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 0 1H8.5V12a.5.5 0 0 1-1 0V8z"/><path fill-rule="evenodd" d="M14 1H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z"/></svg></div>'); var content = $('<div id="gm-content"></div>'); var tips = $('<div class="tip" style="display:none;">\u957f\u6309\u62d6\u62fd</div>'); var scrollText = $('<marquee>').text('\u4e7e\u5764\u672a\u5b9a\uff0c\u4f60\u6211\u7686\u662f\u9ed1\u9a6c----\u4f5c\u8005\uff1a\u897f\u74dc\u8981\u5927\u7684\uff08\u611f\u8c22\u652f\u6301\uff01\uff09').css({ 'position': 'absolute', 'top': '15%', 'left': '50%', 'transform': 'translate(-50%, -50%)', 'width': '90%', 'height': '25px', 'font-size': '16px', 'line-height': '1.5', 'white-space': 'nowrap' }).appendTo(content); //var ddds1 = $('<div style="position: absolute;top: 20%;width:90%;height:10%;padding: 3px;background: #ffedf0;border-radius: 5px;">\u70b9\u51fb\u542f\u52a8\uff1a<button id="startxg" style="position: absolute;width:48px;right: 10px;background-color: #ffe5e5;border-radius: 4px;border-color: #ffc0c0;color: grey;">\u542f\u52a8</button></div>'); //var ddds5 = $('<div style="position: absolute;top: 35%;width:90%;height:10%;padding: 3px;background: #ffedf0;border-radius: 5px;">\u70b9\u51fb\u542f\u52a8\uff1a<button id="stopxg" style="position: absolute;width:48px;right: 10px;background-color: #ffe5e5;border-radius: 4px;border-color: #ffc0c0;color: grey;">暂停</button></div>'); //var ddds2 = $('<div style="position: absolute;top: 50%;width:90%;height:10%;padding: 3px;background: #ffedf0;border-radius: 5px;">\u89c6\u9891\u500d\u901f\uff1a<button id="speedxg" style="position: absolute;width:48px;right: 10px;background-color: #ffe5e5;border-radius: 4px;border-color: #ffc0c0;color: grey;">X16</button></div>'); ddds3 = $('<div id="message-container" style="position: absolute;display: grid;align-content: baseline;justify-content: center;top: 20%;width:94%;height:62%;max-height:62%;overflow-y:auto;padding: 3px;background: #ffffff;border-radius: 5px;"></div>'); var ddds4 = $('<div style="position: absolute;top: 85%;width:94%;height:10%;padding: 3px;background: #ffedf0;border-radius: 5px;"><button id="saveExam" style="position: absolute;width:69;right: 356px;background-color: #ffe5e5;border-radius: 4px;border-color: #ffc0c0;color: grey;">录入</button><button id="beginExam" style="position: absolute;width:69;right: 306px;background-color: #ffe5e5;border-radius: 4px;border-color: #ffc0c0;color: grey;">考试</button><button id="delExam" style="position: absolute;width:69;right: 256px;background-color: #ffe5e5;border-radius: 4px;border-color: #ffc0c0;color: grey;">删除</button><a href="http://8.130.116.135/?article/" style="position: absolute;right: 10px;text-decoration: none;color: pink;">\u003e\u003e\u003e\u8054\u7cfb\u003a\u0031\u0039\u0030\u0038\u0032\u0034\u0035\u0033\u0030\u0032\u0040\u0071\u0071\u002e\u0063\u006f\u006d</a></div>'); container.append(titleBar); //content.append(ddds1); //content.append(ddds5); //content.append(ddds2); content.append(ddds3); content.append(ddds4); container.append(content); container.append(maxButton); container.append(minimizeButton); $('body').append(container); $('body').append(tips); GM_addStyle(` #gm-interface { position: fixed; top: 10%; left: 70%; border-radius: 5px; background-color: white; z-index: 9999; } #gm-title-bar { padding: 5px; background-color: #ffc0c0; border: 1px solid black; border-radius: 5px; cursor: grab; } #gm-minimize-button { position: absolute; top: 2px; right: 2px; width: 30px; height: 30px; border-radius: 5px; padding: 0; font-weight: bold; background-color: #ffc0c0; cursor: pointer; } #gm-content { padding: 10px; border: 1px solid black; border-radius: 2px 2px 5px 5px; background-color: #ffe5e5; width: 400px; height: 300px; } .tip{ font-family: "黑体"; color: black; -webkit-transform: scale(0.8); position:absolute; padding: 6px 5px; background-color:#ffe8f0; border-radius: 4px; z-index: 9999; } `); titleBar.on('mousemove',function(e){ tips.attr("style", "display:black;"); var top = e.pageY+5; var left = e.pageX+5; tips.css({ 'top' : top + 'px', 'left': left+ 'px' }); }); titleBar.on('mouseout',function(){ tips.hide(); }); titleBar.on('mousedown', function(e) { var startX = e.pageX - container.offset().left + window.scrollX; var startY = e.pageY - container.offset().top + window.scrollY; $(document).on('mousemove', function(e) { e.preventDefault(); var newX = e.pageX - startX; var newY = e.pageY - startY; container.css({ left: newX, top: newY }); }); $(document).on('mouseup', function() { $(document).off('mousemove'); $(document).off('mouseup'); }); }); $("#beginExam").on('click',function(){ ddds3.children().remove(); let examName = $('<div id="tableForm"><div><input type="text" id="xgExamName" placeholder="请输入考试课程名称"></div><button id="xgSelect" style="width:88px;background-color: #ffe5e5;border-radius: 4px;border-color: #ffc0c0;color: grey;">开始</button></div>'); examName.appendTo(ddds3); $("#xgSelect").on('click',function(){ let ju = getAnswerByName(); if(!ju){ return; } ddds3.children().remove(); addMessage('开始答题:'+ju); document.querySelector("#insertPaper").children[1].children[0].children[2].click(); let danxuanCount = document.querySelector("#insertPaper").children[2].childElementCount; nowAnswer = ju; beginExam(danxuanCount); }); pintOldData(); }); $('#saveExam').on('click',function(){ ddds3.children().remove(); let tableForm = $('<div id="tableForm"><div><input type="text" id="xgExamName" placeholder="请输入考试课程名称"></div><div><textarea type="text" id="xgAnswer" placeholder="请输入答案集"></textarea></div><button id="xgSave" style="width:88px;background-color: #ffe5e5;border-radius: 4px;border-color: #ffc0c0;color: grey;">保存</button></div>'); tableForm.appendTo(ddds3); $("#xgSave").on('click',function(){ let xgExamName = $("#xgExamName").val(); let xgAnswer = $("#xgAnswer").val(); if(xgExamName === '' || xgExamName === null || xgExamName === undefined){ alert("考试课程不可为空!"); } else if(xgAnswer === '' || xgAnswer === null || xgAnswer === undefined){ alert("答案集不可为空!"); } else{ console.log(xgAnswer); let aw = xgAnswer.split(','); saveAnswer(xgExamName,aw); alert('保存成功:('+JSON.stringify(aw)+'),刷新页面即可自启动'); } }); pintOldData(); }); $("#delExam").on('click',function(){ ddds3.children().remove(); // GM_deleteValue('answerList'); addMessage("未获取删除权限"); }); minimizeButton.on('click', function() { minimizeButton.attr("style", "display:none;"); maxButton.attr("style", "display:black;"); content.slideToggle(0); container.css({ width: 200 }); }); maxButton.on('click', function() { minimizeButton.attr("style", "display:black;"); maxButton.attr("style", "display:none;"); content.slideToggle(0); container.css({ width: 422 }); }); ddds3.on('mousewheel', function(event) { event.preventDefault(); var scrollTop = ddds3.scrollTop(); ddds3.scrollTop(scrollTop + event.originalEvent.deltaY); }); addMessage = function(message){ if (ddds3.children().length >= 288) { ddds3.children().first().remove(); } var messageElement = $('<div class="message"></div>').text(message).css({ 'margin-bottom': '10px' }).appendTo(ddds3); } } function pintOldData(){ addMessage('保存记录:'); getAnswer().forEach(obj => { for (let key in obj) { addMessage(key); } }); } function getAnswerByName(){ let xgExamName = $("#xgExamName").val(); if(xgExamName === '' || xgExamName === null || xgExamName === undefined){ alert("考试课程不可为空!"); return false; } let data = getAnswer(); let result = data.reduce((accumulator,obj) => { if(xgExamName in obj){ return obj[xgExamName]; } return accumulator; },undefined); if(!result){ addMessage('没有此考试数据!'); return false; } return result; } function getAnswer(){ let oldData = GM_getValue('answerList'); if(Array.isArray(oldData)){ return oldData; } return []; } function saveAnswer(name,content){ let answer = getAnswer(); let existIndex = answer.findIndex(obj => name in obj); if (existIndex !== -1) { // 更新值为['1','2','3'] answer[existIndex][name] = content; } else { // push新集合 let tempMap = {}; tempMap[name] = content; answer.push(tempMap); } GM_setValue('answerList',answer); } panel(); addMessage("》》》》》辅助工具"); var wait = null; var overlay; function startSetInt(){ wait = setInterval(function (){ ddds3.children().remove(); addMessage("考试"); if(window.location.href.split('?')[0].toString() === 'https://admin.hnpxw.org/learner/examine/openPaper.do'){ try{ tipsWin().then((result) => { if(!result){ // ddds3.children().remove(); addMessage("启动"); setTimeout(function(){ },1000); }else{ addMessage("取消"); } }); }catch(e){ addMessage(e); } } else{ addMessage("当前状态无法使用"); } stopTimer(); }, 900); } // 手动停止定时器 function stopTimer() { clearInterval(wait); } function tipsWin(){ return new Promise((resolve, reject) => { var popup = document.createElement('div'); popup.id = 'customPopup'; popup.style.display = 'none'; popup.style.position = 'fixed'; popup.style.top = '50%'; popup.style.left = '50%'; popup.style.transform = 'translate(-50%, -50%)'; popup.style.backgroundColor = '#fff'; popup.style.padding = '20px'; popup.style.border = '1px solid #ccc'; popup.style.boxShadow = '0 2px 4px rgba(0, 0, 0, 0.2)'; popup.style.zIndex = '9999'; popup.innerHTML = ` <p id="timeCount">5秒后执行脚本?</p> <button id="confirmButton">是</button> <button id="cancelButton">否</button> `; document.body.appendChild(popup); var confirmButton = document.getElementById('confirmButton'); var cancelButton = document.getElementById('cancelButton'); var confirmed = false; let juNext = false; popup.style.display = 'block'; confirmButton.addEventListener('click', function() { confirmed = true; closePopup(); resolve(false); }); cancelButton.addEventListener('click', function() { ddds3.children().remove(); addMessage("刷新页面即可重启"); confirmed = true; closePopup(); resolve(true); }); function ju(time){ if(!confirmed){ if(time < 1){ popup.innerHTML = ` <p>时间到了! 脚本启动.</p>`; setTimeout(function() { closePopup(); resolve(false); }, 1000); } else{ document.getElementById('timeCount').innerText = time+'秒后执行脚本?'; } setTimeout(function(){ ju(--time) },1000); } } ju(5); function closePopup() { popup.style.display = 'none'; } }); } function toggleOverlay(show) { if (show) { overlay = document.createElement('div'); overlay.style.position = 'fixed'; overlay.style.top = '0'; overlay.style.left = '0'; overlay.style.width = '100%'; overlay.style.height = '100%'; overlay.style.backgroundColor = 'rgba(0, 0, 0, 0.5)'; overlay.style.zIndex = '9999'; overlay.addEventListener('click', function(event) { event.stopPropagation(); event.preventDefault(); }); document.body.appendChild(overlay); } else { if (overlay) { overlay.parentNode.removeChild(overlay); overlay = null; } } } startSetInt(); var nowAnswer = null; var questionIndex = 3; var answerIndex = 0; function beginExam(count){ if(questionIndex < count){ console.log(); inputRadio(0,nowAnswer[answerIndex],count,2); } else{ addMessage('单选结束'); nowAnswer.splice(0,count/4); questionIndex = 3; answerIndex = 0; document.querySelector("#insertPaper").children[1].children[0].children[3].click(); let duoxuanCount = document.querySelector("#insertPaper").children[3].childElementCount; setTimeout(function(){ beginExamTow(duoxuanCount); },1000); } } function beginExamTow(count){ if(questionIndex < count){ inputRadio(0,nowAnswer[answerIndex],count,3); } else{ addMessage('多选结束'); nowAnswer.splice(0,count/4); questionIndex = 3; answerIndex = 0; document.querySelector("#insertPaper").children[1].children[0].children[4].click(); let duoxuanCount = document.querySelector("#insertPaper").children[4].childElementCount; setTimeout(function(){ beginExamThree(duoxuanCount); },1000); } } function beginExamThree(count){ if(questionIndex < count){ inputRadio(0,nowAnswer[answerIndex],count,4); } else{ addMessage('答题完毕'+nowAnswer.length); nowAnswer.splice(0,count/4); questionIndex = 3; answerIndex = 0; } } function inputRadio(index,answer,count,page){ let tempAW = answer; let tempCount = count; let tempPage = page; console.log(index,answer,count,page); if(index < tempAW.length){ switch(answer[index]) { case 'A': console.log("第"+(answerIndex+1)+"题选","A"); radioOk(0,page); break; case 'B': console.log("第"+(answerIndex+1)+"题选","B"); radioOk(1,page); break; case 'C': console.log("第"+(answerIndex+1)+"题选","C"); radioOk(2,page); break; case 'D': console.log("第"+(answerIndex+1)+"题选","D"); radioOk(3,page); break; case 'E': console.log("第"+(answerIndex+1)+"题选","E"); radioOk(4,page); break; case '√': console.log("第"+(answerIndex+1)+"题选","是"); radioOk(0,page); break; case '×': console.log("第"+(answerIndex+1)+"题选","否"); radioOk(1,page); break; } setTimeout(function(){ inputRadio(++index,tempAW,tempCount,tempPage) },200); }else{ console.log("第"+(answerIndex+1)+"题结束"); setTimeout(function(){ questionIndex+=4; answerIndex++; switch(page) { case 2: beginExam(count); break; case 3: beginExamTow(count); break; case 4: beginExamThree(count); break; } },333); } } function radioOk(index,page){ if(!document.querySelector("#insertPaper").children[page].children[questionIndex].getElementsByTagName('input')[index].checked){ document.querySelector("#insertPaper").children[page].children[questionIndex].getElementsByTagName('input')[index].click(); } else{ console.log('无需重复选择'); } } })();