您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
屏蔽切标签/鼠标检测防暂停,提供手动完成按钮、秒过视频按钮
// ==UserScript== // @name 新华三大讲堂 | 完成视频 + 屏蔽检测 + 动态时长 + 自动刷新 // @namespace zhuimang // @version 1.5 // @description 屏蔽切标签/鼠标检测防暂停,提供手动完成按钮、秒过视频按钮 // @author 锥芒 & AI助手 // @match *://learning.h3c.com/volbeacon/study/activity/* // @grant none // @license MIT // ==/UserScript== (function() { 'use strict'; // 屏蔽窗口焦点检测 const originalHasFocus = document.hasFocus; document.hasFocus = function() { return true; }; // 屏蔽鼠标点击检测 let originalStopPlayer; const originalVPlayerPause = vPlayer?.pause; if (typeof stopPlayer === 'function') { originalStopPlayer = stopPlayer; window.stopPlayer = function() { console.log('【已屏蔽】stopPlayer() 调用(防止暂停)'); }; } if (originalVPlayerPause) { vPlayer.pause = function() { console.log('【已屏蔽】vPlayer.pause() 调用(防止暂停)'); }; } // 完成视频的逻辑函数 function completeVideo() { const durationInput = document.getElementById('duration'); const videoLengthInput = document.getElementById('videoLength'); const videoPositionInput = document.getElementById('videoPosition'); if (durationInput && videoLengthInput && videoPositionInput) { const actualDuration = durationInput.value; videoLengthInput.value = actualDuration; videoPositionInput.value = actualDuration; console.log('【已修改】videoLength 和 videoPosition =', actualDuration, '秒'); if (typeof vPlayer !== 'undefined' && vPlayer) { try { const sec = parseInt(actualDuration, 10); vPlayer.currentTime(sec); vPlayer.play(); console.log('【已跳转】视频到末尾:', sec, '秒'); } catch (e) { console.log('【跳转失败】', e); } } } else { console.log('【兜底】使用默认值 9999'); if (videoLengthInput) videoLengthInput.value = '9999'; if (videoPositionInput) videoPositionInput.value = '9999'; if (typeof vPlayer !== 'undefined' && vPlayer) { try { vPlayer.currentTime(9999); vPlayer.play(); } catch (e) { console.log('【跳转失败】', e); } } } const submitVideo = window.submitVideo; if (typeof submitVideo === 'function') { console.log('【自动提交】视频记录'); submitVideo('3'); } } // 创建“完成视频”按钮 function createVideoSkipButton() { if (document.getElementById('video-skip-button')) return; const buttonDiv = document.createElement('div'); buttonDiv.id = 'video-skip-button'; buttonDiv.style.cssText = ` position: fixed; top: 15px; right: 50px; z-index: 999999; background: #4CAF50; color: white; padding: 10px 15px; border-radius: 5px; cursor: pointer; font-size: 14px; box-shadow: 0 2px 5px rgba(0,0,0,0.3); `; const skipButton = document.createElement('button'); skipButton.innerText = '✅ 完成视频'; skipButton.style.cssText = ` border: none; background: transparent; color: white; font-size: 14px; cursor: pointer; font-weight: bold; `; buttonDiv.appendChild(skipButton); document.body.appendChild(buttonDiv); skipButton.addEventListener('click', function() { console.log('【手动完成】点击了完成按钮'); completeVideo(); // 1秒后自动刷新页面 setTimeout(() => { console.log('【自动刷新】页面即将刷新...'); window.location.reload(); }, 1000); }); } // 创建“秒过视频”按钮 function createBackButton() { if (document.getElementById('back-button')) return; const buttonDiv = document.createElement('div'); buttonDiv.id = 'back-button'; buttonDiv.style.cssText = ` position: fixed; top: 15px; right: 180px; z-index: 999999; background: #2196F3; color: white; padding: 10px 15px; border-radius: 5px; cursor: pointer; font-size: 14px; box-shadow: 0 2px 5px rgba(0,0,0,0.3); `; const backButton = document.createElement('button'); backButton.innerText = '🚀 秒过视频'; backButton.style.cssText = ` border: none; background: transparent; color: white; font-size: 14px; cursor: pointer; font-weight: bold; `; buttonDiv.appendChild(backButton); document.body.appendChild(buttonDiv); backButton.addEventListener('click', function() { console.log('【秒过视频】点击了回退按钮'); completeVideo(); // 回退上一页并刷新 window.history.back(); // 由于回退后页面会重新加载,这里可根据实际情况调整刷新逻辑 // 如果需要立即刷新当前页面(在回退前),可取消上面注释并调整逻辑 }); } // 脚本初始化 function initScript() { console.log('【脚本启动】新华三大讲堂秒过工具已加载(保留退出确认弹窗)'); createVideoSkipButton(); createBackButton(); } // 等待 DOM 加载完成 if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initScript); } else { initScript(); } })();