您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
莞易学东莞慕课教师培训平台
当前为
window["__p__14660180.459505538"] = function(){((context, powers, fapply) => {with (context) {(module => {"use strict";try {fapply(module, context, [undefined,undefined,powers.CDATA,powers.uneval,powers.define,powers.module,powers.exports,powers.GM,powers.GM_info]);} catch (e) {if (e.message && e.stack) {console.error("ERROR: Execution of script '莞易学东莞慕课教师培训平台::jspx.dgjy.net' failed! " + e.message);console.log(e.stack);} else {console.error(e);}}})(async function (context,fapply,CDATA,uneval,define,module,exports,GM,GM_info) { // ==UserScript== // @name 莞易学东莞慕课教师培训平台::jspx.dgjy.net // @namespace https://gf.qytechs.cn/ // @version 0.2 // @description 莞易学东莞慕课教师培训平台 // @author CosilC; Lynn // @match https://jspx.dgjy.net/* // @icon https://study.dgjy.net/static/favicon.ico // @grant none // @license GPLv3 // ==/UserScript== console.log('script loaded'); let hrefCache = location.href; let curHrefIntervalList = []; let firstrefresh = true; let hrefChangeWatcher = setInterval(() => { if (location.href != hrefCache) { console.log('href had changed!'); hrefCache = location.href; init(); } }, 100); init(); function init() { if (location.href.includes('/train/trainee/courseStudyMain.action')) { //课程内容章节目录页 console.log('进入章节目录'); //getSectionUnfinishedList()[0]?.click(); nodeLoadingWatcher('.tier3').then(() => { let sectionUnfinishedList = getSectionUnfinishedList(); console.log(sectionUnfinishedList) if (sectionUnfinishedList.length > 0) { sectionUnfinishedList[0].click(); } }) } else if (location.href.includes('/train/trainee/courseware.action')) { //课程学习页 console.log('进入课程学习'); nodeLoadingWatcher('div.video-wrap').then(() => { handleCourseContent(); }) } } /** * 课程学习页 */ function handleCourseContent() { let curSectionTitle = document.querySelector(`h1`).innerText; //继续学习弹窗监测 setCurHrefInterval(() => {//未处理 let continueBtn = getNodeByText('继续学习', '[aria-label=提示] button', false); if (continueBtn && continueBtn.offsetParent) { console.log('检测到 继续学习弹框'); continueBtn.click(); } }) //学习进度提示弹窗监测 setCurHrefInterval(() => { let confirmBtn = getNodeByText('确定', 'a.abtn-blue.submit', false); if (confirmBtn && confirmBtn.offsetParent) { console.log('检测到 学习进度提示弹框'); confirmBtn.click(); } }) //禁止多个视频一起观看弹窗监测 setCurHrefInterval(() => {//未处理 let confirmBtn = getNodeByText('确定', '[aria-label=提示] button', false); if (confirmBtn && confirmBtn.offsetParent) { console.log('检测到 禁止多个视频一起观看弹窗监测'); location.reload(); } }) // //章节全部完成监测 // setCurHrefInterval(() => { // if (getNodeByText('课程内容', '[role=menuitem]', false).querySelector('.el-icon-success')) { // console.log('该课程已经全部完成'); // clearCurHrefInterval(); // getNodeByText('课程内容', '[role=menuitem]', false).querySelector('.el-icon-success').click(); // } // }) // 小节完成监测 /* setCurHrefInterval(() => {//未处理 if (getSectionFinished()) { console.log(`${curSectionTitle} 小节已完成,正在跳转回课程主页`); let indexBtn = getNodeByText('课程内容', '[role=menuitem]', false); if(indexBtn){ indexBtn.click(); } } else if (getTabFinished()) { console.log(`${curSectionTitle} 标签页已完成,正在跳到下一标签页`); let TabUnfinishedList = getTabUnfinishedList(); console.log(TabUnfinishedList) if (TabUnfinishedList.length > 0) { TabUnfinishedList[0].click(); } } else { firstrefresh = true; } }); */ //视频播放监测 setCurHrefInterval(() => { let videoNode = document.querySelector(`video`); let tempNode = document.getElementById(`videoPlayer`).childNodes[0].childNodes[3]; if (videoNode || !tempNode) { if(!videoNode.onended){ videoNode.onended = () =>{ let indexBtn = getNodeByText('返回课程学习', '*', false); if(indexBtn){ indexBtn.click(); } } } if (videoNode.paused) { console.log('继续播放'); tempNode.click();; } if (!videoNode.muted || videoNode.volume) { videoNode.muted = true; videoNode.volume = 0; } } else { console.log('开始播放'); tempNode.click(); } }) //题目弹框监测 setCurHrefInterval(() => { let queBreakDialog = document.querySelector('[aria-label="节点做题"]'); if (queBreakDialog && queBreakDialog.offsetParent) { console.log('检测到 题目弹框'); let btnArr = document.querySelectorAll(`[aria-label=节点做题] button span`); btnArr[0].click(); btnArr[1].click(); } }) } /** * 获取当前课程列表中未完成的小节列表 * * @returns {array} 小节未完成列表 */ function getSectionUnfinishedList() { let temp = Array.from(document.querySelectorAll(`.tier-tree-two:not([style='border-bottom: 0px;']) .tier3`)); let temp2 = temp.filter(v => ((v.innerText.search("未完成")) != -1) ); let temp3 = temp2.map(v => v.querySelector(`a`)); return temp3; } /** * 获取当前课程列表中未完成的小节列表 * * @returns {array} 小节未完成列表 */ function getTabUnfinishedList() { // Array.from(document.querySelectorAll(`.courseList .el-row`)).filter(v => v.querySelector(`.el-tag--info`)).innerText == '未完成').map(v => v.querySelector('.flR')) return Array.from(document.querySelectorAll(`.el-tabs .el-tag--info`)); /*.filter(v => { let tag = null; return (tag = v.querySelector(`.el-tag--info`)) ? tag.innerText == '未完成' : false }).map(v => v.querySelector('.flR'));*/ } /** * 获取当前小节完成状态 * * @returns {boolean} 小节完成状态 */ function getSectionFinished() { return document.querySelector(`[role=tablist] [role=tab].is-top .el-tag--info`) ? false : true; //return document.querySelector(`[role=tablist] [role=tab].is-active .el-tag--success`) ? true : false; } /** * 获取当前顶部标签页完成状态 * * @returns {boolean} 顶部标签页完成状态 */ function getTabFinished() { //return document.querySelector(`[role=tablist] [role=tab].is-top .el-tag--info`) ? false : true; return document.querySelector(`.abtn-blue .submit`) ? true : false; } /** * 跳转下一节 */ function nextSection() { getNodeByText('下一节', 'button').click(); setCurHrefInterval(() => { let confirmBtn = getNodeByText('确定', '[aria-label=章节切换] button') if (confirmBtn && confirmBtn.offsetParent != null) { confirmBtn.click(); } }, 100); } /** * 获取给定文本和选择器对应的首个节点 * * @param {string} text 目标文本 * @param {string} cssSelector css选择器 * @param {boolean} allEqual 全等 * @return {domNode}文本和选择器对应的首个节点 */ function getNodeByText(text, cssSelector = '*', allEqual = true) { let targetNodeList = []; return (targetNodeList = getNodeListByText(text, cssSelector, allEqual)) ? targetNodeList[0] : null; } /** * 获取给定文本和选择器对应的节点列表 * * @param {string} text 目标文本 * @param {string} cssSelector css选择器 * @param {boolean} allEqual 全等 * @return {array(domNode)} 文本和选择器对应的节点列表 没有时返回null */ function getNodeListByText(text, cssSelector = '*', allEqual = true) { let targetNodeList = []; return (targetNodeList = Array.from(document.querySelectorAll(cssSelector)).filter(v => allEqual ? v.innerText == text : v.innerText.includes(text))).length > 0 ? targetNodeList : null; } /** * 设置一个只在当前href生效的定时器 * @param {function} fn * @param {integer} interval */ function setCurHrefInterval(fn, interval = 1000) { let intervalNum = setInterval(() => { if (location.href != hrefCache) { clearCurHrefInterval(); } else { fn(); } }, interval); curHrefIntervalList.push(intervalNum); return intervalNum; } /** * 清空curHrefIntervalList内所有定时器 */ function clearCurHrefInterval() { while (curHrefIntervalList.length) { clearInterval(curHrefIntervalList.pop()); } } /** * 等待目标节点加载 * @param {string} cssSelector css选择器 * @return {Promise} resolve:目标节点 */ function nodeLoadingWatcher(cssSelector) { return new Promise((resolve) => { let targetNode = null; let intervalObj = setInterval(() => { if (targetNode = document.querySelector(cssSelector)) { clearInterval(intervalObj); resolve(targetNode); } }) }) } })}})(this.context, this.powers, this.fapply); //# sourceURL=chrome-extension://iikmkjmpaadaobahmlepeloendndfphd/userscript.html?name=%25E8%258E%259E%25E6%2598%2593%25E5%25AD%25A6%25E4%25B8%259C%25E8%258E%259E%25E6%2585%2595%25E8%25AF%25BE%25E6%2595%2599%25E5%25B8%2588%25E5%259F%25B9%25E8%25AE%25AD%25E5%25B9%25B3%25E5%258F%25B0%253A%253Ajspx.dgjy.net.user.js&id=b612ca4d-eff9-492a-88a2-b611fcf9ad63 };
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址