登录,打开学习页面,将自动学习
当前为
// ==UserScript==
// @name 教师在线研修个人用
// @namespace http://tampermonkey.net/
// @version 1.2
// @description 登录,打开学习页面,将自动学习
// @author longlong
// @match https://zy.jsyx.sdedu.net/*
// @icon https://zy.jsyx.sdedu.net/
// @grant none
// @license
// ==/UserScript==
(function() {
'use strict';
setTimeout(function() {
if (typeof window.interval !== 'undefined') {
window.interval = 9;
console.log('油猴脚本:已将视频更新间隔强制设置为 ' + window.interval + ' 秒。');
} else {
console.warn('油猴脚本:未能找到全局变量 interval,可能无法修改更新频率。');
}
}, 1000); // 延迟 1 秒执行,确保页面原始脚本已运行
// =======================================================
/**
* 检查学习进度并自动跳转到下一章节
*/
function play(){
if (typeof window.player !== 'undefined' && typeof window.player.videoPlay === 'function') {
// 注意:ckplayer 没有统一的 isPaused 方法,但可以直接调用 videoPlay()
// 它是幂等的(如果已播放,调用 videoPlay() 不会造成问题)。
// 或者尝试使用 getStatus() 来检查状态。这里采用最直接的 videoPlay()。
// 假设我们只有在播放器明确处于暂停状态时才调用 videoPlay()
// 常见的 ckplayer 状态检查方法是 player.getState(),返回 'play' 或 'pause'
// 如果 player.getState() 找不到,我们直接调用 videoPlay(),确保播放。
let isPaused = false;
if (typeof window.player.getState === 'function') {
isPaused = (window.player.getState() !== 'play');
} else {
// 如果无法获取准确状态,就保守地检查视频元素是否被暂停类名标记
// 此处没有通用的 DOM 标记,所以最可靠的方法还是依赖 player.videoPlay()
// 确保它被触发。
}
// 无论是暂停还是未开始播放,都尝试调用 videoPlay() 确保视频继续
window.player.videoPlay();
}
// 检查第一个提示文本:是否包含 "您已完成观看"
var promptText = $(".g-study-prompt p ")[0]?.innerText || "";
if(promptText.indexOf("您已完成观看") >= 0){
// 如果已完成,点击下一章节的链接 (假设 a[1] 是下一章)
$("#studySelectAct a")[1]?.click();
console.log("学习完成提示出现,已自动跳转到下一章节。");
return;
}
// 检查计时器进度:已观看时间 (timer1) 是否大于等于 要求观看时间 (timer2)
var timer1Element = $(".g-study-prompt p span")[0];
var timer2Element = $(".g-study-prompt p span")[1];
if (timer1Element && timer2Element) {
var timer1 = timer1Element.innerText; // 已观看时间(分钟)
var timer2 = timer2Element.innerText; // 要求观看时间(分钟)
// 比较分钟数:如果已观看时间 >= 要求时间,则点击下一章节
if (parseInt(timer1) <= parseInt(timer2)){
$("#studySelectAct a")[1]?.click();
console.log(`进度检查通过 (${timer1} >= ${timer2}),已自动跳转到下一章节。`);
}
}
}
// =======================================================
// 2. 增加定时器:每 2000 毫秒(2 秒)运行一次 play()
// 使用 setInterval 来周期性地执行 play 函数
const playTimer = setInterval(play, 2000);
console.log("油猴脚本:每 2 秒运行一次 play() 函数的定时器已启动。");
// =======================================================
})();