如何通过自动注入JS阻止网站检测标签页/窗口切换?(Chrome MacOS)
实现Chrome自动注入JS阻止站点检测页面离开状态
方法一:使用Tampermonkey脚本管理器(推荐)
这是最便捷的实现方式,无需手动编写扩展,支持灵活配置注入规则:
- 打开Chrome应用商店,搜索并安装Tampermonkey插件
- 点击浏览器右上角的Tampermonkey图标,选择「创建新脚本」
- 删除默认代码,替换为以下内容:
// ==UserScript== // @name 阻止页面离开检测 // @namespace http://tampermonkey.net/ // @version 0.1 // @description 让站点无法检测页面是否切换标签/窗口 // @author You // @match *://*/* // @grant none // ==/UserScript== (function() { 'use strict'; // 拦截visibilitychange事件,阻止站点监听状态变化 document.addEventListener('visibilitychange', function(e) { e.stopImmediatePropagation(); }, true); // 重写visibilityState属性,始终返回'visible' Object.defineProperty(document, 'visibilityState', { get: () => 'visible', configurable: false }); // 重写hidden属性,始终返回false Object.defineProperty(document, 'hidden', { get: () => false, configurable: false }); // 阻止blur事件,避免站点检测到失去焦点 window.addEventListener('blur', function(e) { e.stopImmediatePropagation(); e.preventDefault(); }, true); // 定时强制页面保持焦点(可选,针对部分依赖焦点检测的站点) setInterval(() => { if (!document.hasFocus()) { window.focus(); } }, 1000); })();
- 按
Ctrl+S保存脚本,之后所有站点加载时都会自动注入这段代码
方法二:手动创建Chrome扩展(无第三方依赖)
如果不想使用第三方脚本管理器,可以手动编写Chrome扩展实现自动注入:
- 在本地创建一个文件夹(例如
stay-focused) - 在文件夹内创建
manifest.json文件,内容如下:
{ "manifest_version": 3, "name": "阻止页面离开检测", "version": "1.0", "content_scripts": [ { "matches": ["*://*/*"], "js": ["content.js"], "run_at": "document_start" } ] }
- 在同一文件夹内创建
content.js文件,内容与Tampermonkey脚本中的核心代码一致:
'use strict'; document.addEventListener('visibilitychange', function(e) { e.stopImmediatePropagation(); }, true); Object.defineProperty(document, 'visibilityState', { get: () => 'visible', configurable: false }); Object.defineProperty(document, 'hidden', { get: () => false, configurable: false }); window.addEventListener('blur', function(e) { e.stopImmediatePropagation(); e.preventDefault(); }, true); setInterval(() => { if (!document.hasFocus()) { window.focus(); } }, 1000);
- 打开Chrome的扩展管理页面(地址栏输入
chrome://extensions/),开启「开发者模式」 - 点击「加载已解压的扩展程序」,选择刚才创建的
stay-focused文件夹即可
注意事项
- 部分站点可能使用更复杂的检测方式(如Web Worker监听),上述代码可覆盖绝大多数常规场景
- 定时聚焦的间隔可根据需求调整,过短可能影响系统性能
- 如果仅需要针对特定站点生效,修改
@match(Tampermonkey)或matches(扩展)的规则即可,例如只针对某网站:*://example.com/*
内容的提问来源于stack exchange,提问作者user129393192
相关产品推荐
相关产品推荐

