跳过弹窗提示 - 增强版
一个功能强大的用户脚本,用于自动跳过网页中所有类型的弹窗提示(alert、confirm、prompt)。
📋 目录
✨ 功能特性
- ✅ 自动拦截三种弹窗:alert、confirm、prompt
- ✅ 即时生效:页面加载前就开始拦截,无延迟
- ✅ 统计功能:记录拦截次数,便于监控
- ✅ 日志记录:可选的控制台日志输出
- ✅ 屏幕通知:可选的右下角拦截提示
- ✅ 灵活配置:支持自定义返回值和行为
- ✅ 控制接口:提供完整的 JavaScript API
- ✅ 可恢复性:可随时恢复原始弹窗功能
📦 安装方法
前提条件
首先需要安装一个用户脚本管理器:
安装脚本
- 点击用户脚本管理器图标
- 选择「添加新脚本」或「创建新脚本」
- 将完整的脚本代码复制粘贴到编辑器中
- 保存脚本(Ctrl+S 或 Cmd+S)
支持的网站
默认支持以下网站:
如需添加其他网站,请修改脚本头部的 @match 行。
📖 使用说明
基础使用
脚本安装后会自动运行,无需任何操作。所有弹窗将被自动拦截:
- alert 弹窗:直接跳过,不显示任何内容
- confirm 弹窗:自动返回
true(可配置)
- prompt 弹窗:自动返回空字符串(可配置)
查看拦截统计
打开浏览器控制台(F12),输入:
window.popupBlocker.showStats()
输出示例:
[弹窗拦截] 统计信息: {
Alert 拦截次数: 5,
Confirm 拦截次数: 2,
Prompt 拦截次数: 1,
总计: 8
}
⚙️ 配置选项
在脚本代码中找到 CONFIG 对象,可以修改以下选项:
const CONFIG = {
enableLog: false, // 是否在控制台记录被拦截的弹窗
logPrefix: '[弹窗拦截]', // 日志前缀
confirmReturn: true, // confirm 函数的返回值
promptReturn: '', // prompt 函数的返回值
showNotification: false, // 是否显示通知(右下角提示)
notificationDuration: 2000 // 通知显示时长(毫秒)
};
配置说明
| 选项 |
类型 |
默认值 |
说明 |
enableLog |
Boolean |
false |
启用后会在控制台输出拦截日志 |
logPrefix |
String |
'[弹窗拦截]' |
日志消息的前缀 |
confirmReturn |
Boolean |
true |
confirm 弹窗的返回值 |
promptReturn |
String |
'' |
prompt 弹窗的返回值 |
showNotification |
Boolean |
false |
在右下角显示拦截通知 |
notificationDuration |
Number |
2000 |
通知显示时长(毫秒) |
运行时修改配置
无需编辑脚本,可以在控制台动态修改配置:
// 启用日志记录
window.popupBlocker.updateConfig({ enableLog: true })
// 启用屏幕通知
window.popupBlocker.updateConfig({ showNotification: true })
// 修改 confirm 返回值为 false
window.popupBlocker.updateConfig({ confirmReturn: false })
// 修改 prompt 返回值
window.popupBlocker.updateConfig({ promptReturn: '默认文本' })
// 查看当前配置
window.popupBlocker.getConfig()
🎮 控制接口
脚本提供了完整的 JavaScript API,可通过 window.popupBlocker 访问:
showStats()
显示拦截统计信息
window.popupBlocker.showStats()
getStats()
获取统计数据对象
const stats = window.popupBlocker.getStats()
console.log(`总共拦截了 ${stats.alertCount} 个 alert 弹窗`)
resetStats()
重置所有统计计数
window.popupBlocker.resetStats()
restore()
恢复原始弹窗函数(用于调试)
window.popupBlocker.restore()
// 现在弹窗会正常显示
updateConfig(newConfig)
更新配置选项
window.popupBlocker.updateConfig({
enableLog: true,
showNotification: true
})
getConfig()
获取当前配置
const config = window.popupBlocker.getConfig()
console.log(config)
❓ 常见问题
Q: 脚本不生效怎么办?
A: 请检查以下几点:
- 确认已安装用户脚本管理器(如 Tampermonkey)
- 确认脚本已启用(管理器图标上没有禁用标记)
- 确认当前网站匹配
@match 规则
- 尝试刷新页面(Ctrl+F5 强制刷新)
- 查看控制台是否有错误信息
Q: 如何添加更多网站?
A: 在脚本头部添加新的 @match 行:
// @match http://your-website.com/*
// @match https://another-site.com/*
或使用通配符匹配所有网站(不推荐):
// @match *://*/*
Q: 能否针对特定网站使用不同配置?
A: 可以在脚本中添加域名检测:
// 根据域名设置不同配置
if (location.hostname === 'sysaq.imu.edu.cn') {
CONFIG.confirmReturn = true;
} else if (location.hostname === 'labsra.scau.edu.cn') {
CONFIG.confirmReturn = false;
}
Q: 如何暂时禁用脚本?
A: 三种方法:
- 在用户脚本管理器中切换脚本开关
- 在控制台运行
window.popupBlocker.restore() 恢复弹窗
- 在脚本管理器中编辑脚本,注释掉主要代码
Q: 会影响网站正常功能吗?
A:
- 大多数情况下不会影响
- 如果某些功能需要用户确认,confirm 会自动返回
true
- 如果需要用户输入,prompt 会返回空字符串
- 可以通过修改
confirmReturn 和 promptReturn 来调整
Q: 如何调试问题?
A: 启用日志记录查看详细信息:
window.popupBlocker.updateConfig({
enableLog: true,
showNotification: true
})
然后观察控制台输出和屏幕通知。
📝 更新日志
v2025.10.19(最新版)
- ✨ 新增 prompt 弹窗拦截
- ✨ 添加统计功能
- ✨ 添加可配置选项
- ✨ 提供完整的控制 API
- ✨ 支持运行时配置修改
- ✨ 可选的屏幕通知
- ✨ 可选的日志记录
- 🔧 使用
@run-at document-start 立即生效
- 🔧 移除不必要的 5 秒延迟
- 🔧 代码重构,使用 IIFE 避免全局污染
v2024.9.14(原始版)
- 基础的 alert 和 confirm 拦截功能
- 5 秒延迟后生效
📄 许可证
MIT License - 自由使用、修改和分发
🤝 贡献
欢迎提交问题和改进建议!
💡 提示
- 建议在使用前先在测试环境验证
- 某些重要操作可能需要用户确认,请谨慎使用
- 可以为不同网站创建不同版本的脚本
- 定期查看统计信息了解拦截情况
享受无打扰的浏览体验! 🎉