// ==UserScript==
// @name 瞎写3修改后
// @namespace http://tampermonkey.net/
// @version 1.7
// @description 直接点击.outter播放按钮,修复课程目录乱点,弹窗是继续学习,播完自动下一节
// @author study
// @match https://px.cwec.org.cn/course/content/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
const popupKeywords = ["是,继续学习","是继续学习","确定","继续"];
const nextKeywords = ["下一节","下一课","下一步"];
// 模拟真实鼠标点击
function simulateClick(el) {
if (!el || el.offsetParent === null) return false;
const mouseDown = new MouseEvent('mousedown', {bubbles:true, cancelable:true});
const mouseUp = new MouseEvent('mouseup', {bubbles:true, cancelable:true});
const clickEvt = new MouseEvent('click', {bubbles:true, cancelable:true});
el.dispatchEvent(mouseDown);
el.dispatchEvent(mouseUp);
el.dispatchEvent(clickEvt);
return true;
}
function clickPlayButton(doc){
const outterBox = doc.querySelector(".outter");
if(outterBox){
if(simulateClick(outterBox)){
console.log("✅【直接点击 outter播放按钮】");
}
}
// 保留兜底,兼容页面其他播放器
const playCtrlGlobal = doc.querySelector(".vjs-play-control");
if(playCtrlGlobal){
if(simulateClick(playCtrlGlobal)){
console.log("✅【全局】点击左下角播放按钮");
}
}
const bigPlayGlobal = doc.querySelector(".vjs-big-play-button");
if(bigPlayGlobal){
if(simulateClick(bigPlayGlobal)){
console.log("✅【全局】点击中间大圆播放按钮");
}
}
}
// 绑定视频结束事件
function bindVideoEnd(doc){
const videos = doc.querySelectorAll("video");
videos.forEach(vid=>{
if(vid.dataset.bindEnded) return;
vid.dataset.bindEnded = "1";
vid.addEventListener('ended',()=>{
console.log("📺 当前视频播放结束,等待弹窗");
})
vid.addEventListener('pause',()=>{
clickPlayButton(doc);
})
})
}
// 点击弹窗、下一节按钮
function clickAllButtons(doc){
clickPlayButton(doc);
doc.querySelectorAll('button,div[role="button"],span').forEach(el=>{
const text = (el.innerText||"").trim();
if(!text) return;
if(popupKeywords.some(k=> text.includes(k))){
if(simulateClick(el)){
console.log("✅【弹窗点击】",text);
}
}
if(nextKeywords.some(k=> text.includes(k))){
if(simulateClick(el)){
console.log("✅【点击下一节】",text);
}
}
})
bindVideoEnd(doc);
}
function runTask(){
clickAllButtons(document);
document.querySelectorAll("iframe").forEach(iframe=>{
try{
const iframeDoc = iframe.contentDocument || iframe.contentWindow.document;
clickAllButtons(iframeDoc);
}catch(e){}
})
}
setInterval(runTask,1500);
console.log("✅水企学苑");
})();