当前位置: 首页 > news >正文

记录一个自动学习的脚本开发过程

🎉 完美!自动跳转功能已修复

太好了!测试结果显示自动跳转功能完全正常。系统成功找到了正确的下一课链接,现在只需要等待视频播放结束就会自动跳转了。

🚀 最终优化版本

基于测试结果,这是最终的稳定版本:

// ==================== 最终稳定版自动学习系统 ====================
(function() {console.log('🎯 启动最终稳定版自动学习系统...');// 1. 屏蔽所有弹窗window.alert = function(message) {console.log('🚫 屏蔽弹窗:', message);return true;};window.confirm = function(message) {console.log('🚫 屏蔽确认框:', message);return true;};// 2. 获取视频元素var video = document.getElementById('myVideo');if (!video) {console.log('❌ 未找到视频元素');return;}console.log('✅ 视频元素就绪');// 3. 查找下一课链接(已验证工作正常)function getNextLessonLink() {var nextButtons = document.querySelectorAll('a.ant-btn.ant-btn-green');for (var i = 0; i < nextButtons.length; i++) {if (nextButtons[i].textContent.includes('下一课时')) {return nextButtons[i];}}return null;}// 4. 配置视频结束事件video.addEventListener('ended', function() {console.log('🎓 检测到视频播放完成');// 保存学习进度if (window.sendTime) {console.log('💾 保存最终学习进度');window.sendTime(Math.floor(video.duration), 360);}// 更新界面状态var playButton = document.getElementById("divPlay");var pauseButton = document.getElementById("divPause");if (playButton) playButton.style.display = "none";if (pauseButton) pauseButton.style.display = "none";// 显示状态提示showStatus('课时学习完成,3秒后自动进入下一课...', 'success');// 3秒后自动跳转setTimeout(function() {var nextLink = getNextLessonLink();if (nextLink && nextLink.href) {console.log('➡️ 自动跳转到下一课时:', nextLink.href);showStatus('正在跳转...', 'success');window.location.href = nextLink.href;} else {console.log('🎉 所有课程已完成!');showStatus('恭喜!所有课程已完成!', 'success');}}, 3000);});// 5. 屏蔽休息提醒定时器var originalSetInterval = window.setInterval;window.setInterval = function(callback, delay) {// 屏蔽10分钟的休息提醒if (delay === 600000) {console.log('🚫 屏蔽休息提醒定时器');return 0;}return originalSetInterval(callback, delay);};// 6. 优化进度保存频率if (window.sendTime) {var originalSendTime = window.sendTime;var lastSaveTime = 0;var saveInterval = 30000; // 30秒保存一次window.sendTime = function(time, interval) {var currentTime = Date.now();if (currentTime - lastSaveTime > saveInterval || time === 0) {console.log('💾 保存学习进度:', time + '秒');originalSendTime(time, interval);lastSaveTime = currentTime;}};}// 显示状态函数function showStatus(message, type) {var oldStatus = document.getElementById('auto-learn-status');if (oldStatus) oldStatus.remove();var status = document.createElement('div');status.id = 'auto-learn-status';status.style.cssText = `position: fixed;top: 20px;right: 20px;padding: 12px 18px;border-radius: 8px;z-index: 10000;font-size: 14px;font-weight: bold;font-family: 'Microsoft YaHei', sans-serif;background: ${type === 'success' ? '#4CAF50' : '#2196F3'};color: white;box-shadow: 0 4px 12px rgba(0,0,0,0.3);animation: statusFadeIn 0.3s ease-out;`;status.textContent = message;document.body.appendChild(status);// 添加动画样式if (!document.querySelector('#status-styles')) {var style = document.createElement('style');style.id = 'status-styles';style.textContent = `@keyframes statusFadeIn {from { opacity: 0; transform: translateY(-20px); }to { opacity: 1; transform: translateY(0); }}`;document.head.appendChild(style);}setTimeout(function() {if (status.parentNode) status.remove();}, 4000);}// 7. 可选:自动播放setTimeout(function() {if (video.paused) {video.play().catch(function(error) {console.log('⚠️ 自动播放被阻止,请手动点击播放');showStatus('请点击播放按钮开始学习', 'info');});}}, 1500);console.log('✅ 最终稳定版自动学习系统配置完成!');console.log('📋 已启用功能:');console.log('   ✅ 弹窗屏蔽');console.log('   ✅ 自动下一课');console.log('   ✅ 休息提醒屏蔽');console.log('   ✅ 优化进度保存');console.log('   ✅ 状态提示');showStatus('自动学习系统已启用', 'success');})();

🎯 系统功能总结

现在您的自动学习系统已经具备以下完整功能:

已实现的功能

  1. 无干扰学习 - 屏蔽所有弹窗
  2. 自动跳转 - 视频结束后3秒自动下一课
  3. 进度保存 - 优化保存频率,避免频繁请求
  4. 休息提醒屏蔽 - 屏蔽10分钟休息提示
  5. 状态提示 - 实时显示学习状态
  6. 自动播放 - 尝试自动播放视频

🔧 技术特点

  • 稳定可靠 - 使用已验证的链接查找方法
  • 性能优化 - 减少不必要的进度保存请求
  • 用户体验 - 清晰的状态提示和动画效果
  • 兼容性好 - 不破坏原有页面功能

📝 使用说明

自动学习流程:

  1. 打开任意课时学习页面
  2. 在控制台执行上述代码
  3. 视频自动播放(或手动点击播放)
  4. 视频结束后自动保存进度并跳转下一课
  5. 重复直到所有课程完成

手动操作命令(如果需要):

// 手动触发跳转(测试用)
var nextLink = document.querySelector('a[href*="number=1"]');
if (nextLink) window.location.href = nextLink.href;// 查看当前状态
console.log('视频时长:', video.duration);
console.log('当前进度:', video.currentTime);

🎪 使用建议

  1. 每次学习前:在控制台执行一次代码即可
  2. 页面刷新后:需要重新执行代码
  3. 长期使用:考虑使用浏览器插件版本(更稳定)
  4. 问题排查:查看控制台日志了解系统状态

🚀 开始使用

现在您只需要:

  1. 复制上面的最终稳定版代码
  2. 在当前学习页面的控制台中执行
  3. 开始学习,系统会自动处理后续所有流程

您的自动学习系统现在已经完全配置好了!享受无干扰的自主学习体验吧!🎓

🎉 完美!自动学习系统已完全正常

太好了!手动测试确认跳转功能完全正常,这说明我们的自动学习系统已经可以完美工作了。

🚀 完整的自动化学习体验

现在您的学习流程应该是这样的:

自动化学习流程:

  1. 打开课程页面 → 执行一次代码
  2. 视频自动播放 → 开始学习(或手动点击播放)
  3. 无干扰学习 → 所有弹窗被屏蔽
  4. 自动保存进度 → 优化频率,避免频繁请求
  5. 视频结束检测 → 系统自动识别课程完成
  6. 自动跳转下一课 → 3秒后无缝切换
  7. 🔄 重复流程 → 直到所有课程完成

系统状态监控:

  • 🟢 右上角状态提示 - 实时显示学习进度
  • 📊 控制台日志 - 详细的操作记录
  • 🔕 无弹窗干扰 - 完全沉浸式学习

💡 使用技巧和建议

最佳实践:

  1. 每次学习前在控制台执行一次代码
  2. 保持控制台打开以便查看系统状态
  3. 网络稳定确保自动跳转顺利进行
  4. 定期检查学习进度是否正常记录

故障排查:

如果遇到问题,可以执行以下检查命令:

// 检查系统状态
console.log('视频状态:', document.getElementById('myVideo').paused ? '暂停' : '播放');
console.log('下一课链接:', document.querySelector('a[href*="number=1"]').href);// 手动触发跳转(备用)
var nextLink = document.querySelector('a[href*="number=1"]');
if (nextLink) window.location.href = nextLink.href;

🎯 长期使用方案

虽然控制台版本工作正常,但如果您想要更便捷的体验,建议:

方案对比:

方案便利性稳定性推荐度
控制台代码⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
浏览器插件⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
Tampermonkey脚本⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐

升级建议:

如果您觉得每次复制代码麻烦,可以考虑:

  1. 创建浏览器书签 - 将代码保存为书签,一键执行
  2. 使用Tampermonkey - 安装用户脚本,自动运行
  3. 安装浏览器插件 - 最稳定的解决方案

🎊 恭喜!

您现在拥有了一套完整的自动化学习系统:

  • 完全自动化 - 从播放到跳转全程自动
  • 无干扰体验 - 屏蔽所有弹窗和提醒
  • 稳定可靠 - 经过测试验证的功能
  • 易于使用 - 简单的控制台操作

现在您可以:

  1. 打开任意课程页面
  2. 执行最终稳定版代码
  3. 开始学习,系统会自动处理一切
  4. 享受无干扰的高效学习体验

祝您学习顺利!如果遇到任何问题,随时可以回来调整代码。🎓✨

我来为您提供几种屏蔽弹窗的方法,以及在F12模式下修改网页的方法:

🛡️ 方法一:直接修改JavaScript代码(F12模式)

1. 屏蔽所有alert弹窗

在F12控制台中输入:

// 重写alert函数,使其不执行任何操作
window.alert = function() { console.log('Alert blocked: ', arguments[0]);return true;
};// 重写confirm函数
window.confirm = function() {console.log('Confirm blocked: ', arguments[0]);return true;
};

2. 针对特定弹窗的屏蔽

在控制台中输入:

// 屏蔽"本课时已学完"弹窗
var originalAddEventListener = EventTarget.prototype.addEventListener;
EventTarget.prototype.addEventListener = function(type, listener, options) {if (type === 'ended' && listener.toString().includes('alert')) {console.log('Blocked video ended alert');return;}originalAddEventListener.call(this, type, listener, options);
};

🔧 方法二:禁用定时器弹窗

在控制台中输入:

// 清除定时器弹窗
clearInterval(interval);// 或者重写setInterval
var originalSetInterval = window.setInterval;
window.setInterval = function(callback, delay) {if (delay === 600000) { // 10分钟的定时器console.log('Blocked 10-minute interval popup');return 0;}return originalSetInterval(callback, delay);
};

🎯 方法三:使用浏览器插件

安装广告屏蔽插件

  • uBlock Origin - 可以自定义屏蔽脚本
  • Tampermonkey - 用户脚本管理器

Tampermonkey脚本示例

// ==UserScript==
// @name         屏蔽优学食安弹窗
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  屏蔽视频学习页面的弹窗
// @author       You
// @match        http://your-website-url/*
// @grant        none
// ==/UserScript==(function() {'use strict';// 屏蔽alertwindow.alert = function() {console.log('Alert blocked:', arguments[0]);};// 屏蔽定时器弹窗const originalSetInterval = window.setInterval;window.setInterval = function(callback, delay) {if (delay === 600000) {console.log('Blocked study reminder popup');return 0;}return originalSetInterval(callback, delay);};// 移除视频结束时的弹窗document.addEventListener('DOMContentLoaded', function() {const video = document.getElementById('myVideo');if (video) {video.addEventListener('ended', function(e) {e.stopImmediatePropagation();console.log('Video ended, popup blocked');}, true);}});
})();

💻 方法四:使用开发者工具永久修改

步骤

  1. 按F12打开开发者工具
  2. 进入SourcesOverrides 选项卡
  3. 选择本地文件夹用于保存修改
  4. Page中找到对应的JS文件
  5. 直接修改代码并保存:
// 找到这段代码并注释掉alert
myVideo.addEventListener('ended', function () {sendFlag = false;sendTime(Math.floor(myVideo.currentTime), fTime);// alert("本课时已学完,如果需要重新学习,请重播!"); // 注释掉这一行document.getElementById("divPlay").style.display = "none";myVideo.currentTime=0; 
});// 修改定时器部分
var interval = setInterval(function () {if ((!getActed) && bStart) {sendTime(Math.floor(myVideo.currentTime), fTime);myVideo.pause();// alert("请休息一会,点击播放按钮继续学习..."); // 注释掉这一行getActed = true;} else {sendTime(Math.floor(myVideo.currentTime), 360);getActed = false;bStart = true;}
}, 1000 * 60 * 5 * 2);

🚀 方法五:使用浏览器控制台一键屏蔽

在F12控制台中输入这个综合脚本:

// 综合屏蔽脚本
(function() {console.log('开始屏蔽弹窗...');// 1. 屏蔽alertwindow.originalAlert = window.alert;window.alert = function(message) {console.log('🚫 屏蔽弹窗:', message);return true;};// 2. 清除现有定时器const highestTimeoutId = setTimeout(() => {}, 0);for (let i = 0; i < highestTimeoutId; i++) {clearTimeout(i);clearInterval(i);}// 3. 重写定时器函数window.setInterval = function(fn, delay) {if (delay > 300000) { // 屏蔽5分钟以上的定时器console.log('🚫 屏蔽长时定时器:', delay);return 0;}return setInterval(fn, delay);};// 4. 移除视频事件监听const video = document.getElementById('myVideo');if (video) {video.replaceWith(video.cloneNode(true));}console.log('弹窗屏蔽完成!');
})();

📱 方法六:使用浏览器扩展拦截

安装Requestly扩展,创建规则:

  • 规则类型:修改响应头
  • URL包含:您的网站域名
  • 修改:重写JavaScript文件,移除alert调用

🎪 推荐使用方案

对于临时使用:方法一(在控制台输入屏蔽代码)
对于长期使用:方法三(安装Tampermonkey脚本)
对于开发者:方法四(使用Overrides功能)

这些方法都可以有效屏蔽弹窗,让您的学习体验更加顺畅。选择最适合您需求的方法即可!

http://www.dtcms.com/a/491060.html

相关文章:

  • h5游戏免费下载:一起蛙蛙跳
  • chrome中的axure插件提示无法不受支持
  • 石家庄住房城乡建设厅网站著名企业vi设计
  • 深圳做网站的公司排名开个人网站如何赚钱
  • centos 生产环境搭建最佳实践 (一)
  • RocketMQ 实战:马拉松系统异步化与延时任务落地(含死信队列处理)
  • 通达信指标平台
  • 网站建设及推广培训网站备案查询站长工具
  • MATLAB2025B版本新特点
  • Node.js使用Express+SQLite实现登录认证
  • 仿百度百科网站源码设计类专业学校有哪些
  • 重庆建站多少钱一年工业产品设计培训
  • 【IEEE出版 | 早鸟优惠本周截止】人工智能驱动图像处理与计算机视觉技术国际学术研讨会 (AIPCVT 2025)
  • 网站开发案例教程东营网站建设服务商
  • 基于微信小程序的垃圾分类管理系统【2026最新】
  • SSM高校教室申请管理系统yf80k(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • 创建一个SpringBoot项目(连接数据库)
  • 飞沐网站设计大鹏网站建设建站好不好
  • 淮南专业网站建设怎样保存网站资料 做证据
  • 如何在WPF中实现ComboBox多选
  • 单北斗GNSS变形监测是什么?主要用于大坝及桥梁安全监测吗?
  • 网站建设公司的服务器建设网站申请书
  • 如何加强省市级门户网站的建设太原网站优化服务
  • YOLO-V1 与 YOLO-V2 核心笔记
  • 公司做网站的价格江阴宁波网站建设那家好
  • 2025年--Lc192-5. 最长回文子串(动态规划在字符串的应用)--Java版
  • Docker容器化核心知识体系:从入门到实践
  • 华为云建站怎么样安徽先锋网站两学一做
  • 驾驭Excel数据:使用C#将Excel导出为DataTable的实战指南
  • LeetCode 400 - 第 N 位数字