// ==UserScript== // @name 【学习公社】学习中心视频自动打卡继续观看 // @namespace http://tampermonkey.net/ // @version 1.2 // @description 学习公社学习中心,检测打卡弹窗并点击,检测继续观看弹窗并点击 // @author SimpleZ // @icon none // @match *://www.ttcdw.cn/* // @grant none // @require https://code.jquery.com/jquery-3.6.0.min.js // @license MIT // @downloadURL none // ==/UserScript== (function() { 'use strict'; let inputValue = localStorage.getItem('urlList') || '' let urlArray = inputValue.replace(/[\n\s]/g, '').split(',') || [] //创建一个控制网址栏显示的按钮 var controlButton = document.createElement('button') controlButton.innerHTML = '学习范围' controlButton.style.width = '80px' controlButton.style.height = '80px' controlButton.style.backgroundColor = '#1252cc' controlButton.style.color = '#ffffff' controlButton.style.borderRadius = '48px' controlButton.style.position = 'fixed' controlButton.style.top = '100px' controlButton.style.right = '50px' //创建一个可控div const containerDiv = document.createElement('div') containerDiv.style.width = '400px' containerDiv.style.height = '500px' containerDiv.style.display = 'none' containerDiv.style.position = 'fixed' containerDiv.style.top = '200px' containerDiv.style.right = '50px' containerDiv.style.zIndex = '999' // 创建一个 div 元素 const divElement = document.createElement('div') divElement.style.width = '400px' divElement.style.height = '500px' divElement.style.backgroundColor = '#f0f0f0' divElement.style.border = '1px solid #ccc' divElement.style.padding = '10px' divElement.style.display = 'flex' divElement.style.flexDirection = 'column' divElement.style.alignItems = 'center' // 创建一个输入框元素 const textareaElement = document.createElement('textarea') textareaElement.style.width = '350px' textareaElement.style.height = '450px' textareaElement.setAttribute('type', 'text') textareaElement.setAttribute('id', 'myInput') textareaElement.value = inputValue //创建一个控制按钮 const buttonElement = document.createElement('button') buttonElement.innerHTML = '开始学习' buttonElement.style.width = '100px' buttonElement.style.height = '30px' buttonElement.style.backgroundColor = '#1252cc' buttonElement.style.color = '#ffffff' buttonElement.style.marginTop = '10px' //将输入框所在div包裹在可控div中 containerDiv.appendChild(divElement) // 将输入框添加到 div 元素中 divElement.appendChild(textareaElement) divElement.appendChild(buttonElement) // 将 div 元素和控制显隐的按钮添加到页面的 body 元素中 document.body.appendChild(containerDiv) document.body.appendChild(controlButton) //显示按钮的控制逻辑 controlButton.addEventListener('click', function() { if (containerDiv.style.display === 'none') { containerDiv.style.display = 'block' } else { containerDiv.style.display = 'none' } }) // 添加事件监听器,当用户输入内容时执行相应的操作 textareaElement.addEventListener('input', function() { // 获取输入框中的内容 inputValue = textareaElement.value }) //把输入框的内容存在localStorage中并跳转到第一个链接 buttonElement.addEventListener('click', function() { localStorage.setItem('urlList', inputValue) window.location.href = urlArray[0] }) setInterval(function() { //30s一次检测是否有打卡弹窗并关闭 if ($('.layui-layer-title').text() === '随堂打卡') { const button = $('.question-wrapper-face button#comfirmClock') if (button) { button.trigger('click') if (button.text() === '确定打卡') console.log('已打卡') else console.log('继续学习') return } } //30s一次检测当前页面视频是否播放完毕 if ($('.xgplayer-replay').css('display') !== 'none' && $('.xgplayer-replay').prop('tagName') === 'XG-REPLAY'){ console.log('已播放完毕') const index = urlArray.indexOf($(location).attr('href')) if (index !== -1 && index < urlArray.length) { window.location.href = urlArray[index + 1] } return } }, 30000) })()