// ==UserScript== // @name 青书学堂 // @namespace http://tampermonkey.net/ // @version 0.1 // @description 青书学堂作业自动填写选择题 // @author kokusan // @match *://*.qingshuxuetang.com/hngd/Student/ExercisePaper* // @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw== // @grant none // @license MIT // @downloadURL none // ==/UserScript== var answerPageUrl; (function() { 'use strict'; // 创建一个iframe用来加载答案页面 var pageUrl = window.location.search; // 青书学堂答案就在下面这个地址中 answerPageUrl = 'https://degree.qingshuxuetang.com/hngd/Student/ViewExerciseAnswer' + pageUrl; var iframe = document.createElement('iframe'); document.body.appendChild(iframe); iframe.style.display = 'none'; iframe.src = answerPageUrl; // 初始化所有选项 $('#form1 > div.question-entity input[type="checkbox"]').prop('checked', false); listenerIframe(iframe); })(); var answer; // 监听创建的答案iframe是否加载完毕 function listenerIframe(iframe) { var iframeLoad = function () { window.setTimeout(function() { console.log("加载完毕") // iframe加载完毕后获取所有问题的答案存进answer中 var an = []; $(iframe.contentDocument).find('#form1 > div > div:nth-child(4) > span.fe855a').each(function(i) { an.push({"index":i, "value":$(this).html()}) }); console.log('成功获取答案数量:' + an.length); console.log(an) answer = an; writeInAnswerFun(); }, 500); // 移除监听器 iframe.removeEventListener("load", iframeLoad, true); }; iframe.addEventListener('load', iframeLoad, true); } // 把答案写入到试卷中 function writeInAnswerFun() { if (!answer) { alert("未成功获取答案,请刷新页面重试!"); return; } // 下面时成功获取答案后该进行的操作 var errNumber = []; answer.forEach(function(item) { try { var value = item.value; for (let i in value) { $('#form1 > div.test_q_' + item.index + '_ input[value="' + value[i] + '"]').prop('checked','checked'); } } catch(e) { try { errNumber.push(item.index + 1) } catch(e2){} } }); if (errNumber.length > 0) { alert('第' + errNumber.join(',') + '题答案录入失败!') } lastFun(); } function lastFun() { alert('自动填入答案程序执行完毕。') if($('#form1 > div.question-entity[questiontype="3"]').length > 0) { window.open(answerPageUrl, "_blank"); } }