Tampermonkey每10秒执行脚本调用GM_notification收不到通知问题求助
Tampermonkey GM_notification 无通知排查方案
常见触发原因
- 浏览器通知权限异常:首先确认系统层面已给浏览器开放通知权限,同时浏览器内部设置没有禁止通知推送,部分浏览器会默认拦截非用户主动交互触发的通知,可先手动触发一次通知验证权限状态。
- 脚本资源加载失败:你当前引入的jQuery资源用的是http协议,如果你运行脚本的站点是https协议,会触发浏览器混合内容拦截,导致整个脚本加载失败无法执行,需将
@require的资源地址改为https协议。 - API 写法不兼容:部分旧版本Tampermonkey不支持对象格式的参数传递,也可使用别名
GM.notification调用,或者按顺序传递参数GM_notification(title, text, icon, onClick)。 - 后台标签页节流:如果脚本运行的标签页长期处于后台,部分浏览器会对定时器任务进行节流,同时拦截非活跃标签页的通知推送。
- 扩展拦截:通知类、广告拦截类扩展可能会误拦截油猴脚本的通知推送,可暂时禁用相关扩展测试。
修复后测试代码
// ==UserScript== // @name _Notification test // @grant GM_notification // @grant GM.notification // @require https://code.jquery.com/jquery-1.12.4.min.js // ==/UserScript== // 兼容两种API写法 const notify = typeof GM_notification === 'function' ? GM_notification : GM.notification; // 单次触发测试 setTimeout(function() { // 顺序传参兼容性更强 notify('foo', '42'); }, 1000); // 10秒周期执行逻辑 setInterval(function() { notify('周期通知', '10秒触发一次'); }, 1000 * 10);
内容的提问来源于stack exchange,提问作者rowend
相关产品推荐
相关产品推荐

