// ==UserScript== // @name 东华网络教自动学习脚本 // @namespace http://tampermonkey.net/ // @version 0.15 // @description try to take over the world! // @author You // @match http://*/* // @include *://donghuacj.ct-edu.com.cn/* // @include *:* // @include *:* // @include *:* // @include *:* // @grant none // @downloadURL none // ==/UserScript== (function() { 'use strict'; /** 脚本开始 */ const INTERVALTIME = 3 * 1000 let waitTill = 0 let timer = null // 判断是否有类 function hasClassFun(element, cls) { console.log('判断类由还是没有element:', element) if (element) { return (' ' + element.className + ' ').indexOf(' ' + cls + ' ') > -1; } else { return false } } // 如果有框 才走下面 const handleNext = () => { showNext() showComplete() showQuestion() } // 定时器检测 timer = setInterval(handleNext, INTERVALTIME); // 出现下一条 function showNext() { // 出现下一页框点击 let selectBox = document.querySelector('.layui-layer.layui-layer-dialog') let next = document.querySelector('.layui-layer.layui-layer-dialog .layui-layer-btn0') // 如果下一张显示就点击下一张 if (selectBox && !selectBox.hidden) { next.click() } } // 出现已完成字样 function showComplete() { // 页面标题出现已完成 let complete = document.querySelector('.item-title .complete.ng-scope') // 所有列表 let allNav = document.querySelectorAll('.course_chapter_item.user-no-select.ng-scope') let index = [].findIndex.call(allNav, v => hasClassFun(v, 'active')) // 如果页面上出现已完成 点击下一跳视频 if (complete && complete.innerText === '已完成') { allNav[index + 1].querySelector('.section_title.ng-binding').click() } } // 处理答题弹窗 function showQuestion() { // 页面标题出现已完成 let q = document.querySelector('.popup_do.ng-scope') if (q) { // 清除全局定时器 clearInterval(timer) // let selectlis = getLis(q) // 获取列表集合 // let submitBtn = getBtn(questionBox) // 提交按钮 // console.log({ q, selectlis }) // 第一条 getLis(q)[0].querySelector('label').click() getBtn(q).click() waitTill = new Date(new Date().getTime() + 1 * 1000); while (waitTill > new Date()) { } if (hasClassFun(getLis(q)[0], 'error')) { console.log('第一条有错误') getBtn(q).click() waitTill = new Date(new Date().getTime() + 1 * 1000); while (waitTill > new Date()) { } } else { timer = setInterval(handleNext, INTERVALTIME); return } // 第二条 getLis(q)[1].querySelector('label').click() getBtn(q).click() waitTill = new Date(new Date().getTime() + 1 * 1000); while (waitTill > new Date()) { } if (hasClassFun(getLis(q)[1], 'error')) { console.log('第二条有错误') getBtn(q).click() waitTill = new Date(new Date().getTime() + 1 * 1000); while (waitTill > new Date()) { } } else { timer = setInterval(handleNext, INTERVALTIME); return } // 第三条 getLis(q)[2].querySelector('label').click() getBtn(q).click() waitTill = new Date(new Date().getTime() + 1 * 1000); while (waitTill > new Date()) { } if (hasClassFun(getLis(q)[2], 'error')) { console.log('第三条有错误') getBtn(q).click() waitTill = new Date(new Date().getTime() + 1 * 1000); while (waitTill > new Date()) { } } else { timer = setInterval(handleNext, INTERVALTIME); return } // 第四条 getLis(q)[3].querySelector('label').click() getBtn(q).click() waitTill = new Date(new Date().getTime() + 1 * 1000); while (waitTill > new Date()) { } if (hasClassFun(getLis(q)[3], 'error')) { console.log('第四条有错误') getBtn(q).click() waitTill = new Date(new Date().getTime() + 1 * 1000); while (waitTill > new Date()) { } } else { timer = setInterval(handleNext, INTERVALTIME); return } } else { getContinueBtn()&& getContinueBtn().click() return } } // 返回答题列表 function getLis (questionBox) { let selectUl = questionBox.querySelector(".item.content.DANXUAN.active ul") let selectlis = selectUl ? selectUl.querySelectorAll("li") : [] return selectlis } // 返回提交重做按钮 function getBtn (questionBox) { return questionBox.querySelector('.btn.whaty-button') } // 返回安提结束继续按钮 function getContinueBtn () { const q = document.querySelector('.popup_show.ng-scope') if (q) { return q.querySelector('.btn.whaty-button') } else { return null } } /** 脚本结束 */ })();