You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

能否修改JavaScript的document.hasFocus()方法使其始终返回true?

如何让document.hasFocus()始终返回true以绕过焦点检测

当然可以实现!你只需要重写浏览器原生的document.hasFocus()方法,强制它每次调用都返回true,就能轻松绕过你提供的这段焦点检测逻辑。下面分两种常见场景给出具体实现:

1. 浏览器控制台临时测试

如果你只是想临时验证效果,直接打开浏览器开发者工具(按F12或Ctrl+Shift+I),切换到**控制台(Console)**标签,输入以下代码并回车:

document.hasFocus = () => true;

执行后,页面上的setInterval检测就会永远显示"The document has focus.",不管你是否点击页面外部。

2. 用户脚本长期生效(比如Tampermonkey)

如果你希望这个修改在特定页面每次加载都自动生效,可以用用户脚本工具(比如Tampermonkey、Violentmonkey)来实现。创建一个新脚本,粘贴以下代码:

// ==UserScript==
// @name         强制文档始终处于聚焦状态
// @namespace    tampermonkey-scripts
// @version      0.1
// @description  让document.hasFocus()永远返回true,绕过焦点检测
// @author       Your Name
// @match        *://目标网站的URL/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
    // 覆盖原生的hasFocus方法
    document.hasFocus = function() {
        return true;
    };
})();
  • @match里的*://目标网站的URL/*替换成你需要作用的页面地址(比如本地HTML文件可以写成file:///*);
  • 保存脚本后,打开目标页面,它就会自动生效,无需每次手动在控制台输入代码。

注意事项

  • 这种重写只会对当前页面生效,刷新页面后如果没有用户脚本,方法会恢复原生行为;
  • 针对你提供的这段简单的setInterval检测逻辑,这个方法完全有效。如果遇到更复杂的焦点检测(比如结合window.onblur事件),可能需要额外处理blur/focus事件,但针对你给出的代码,上述方案足够解决问题。

内容的提问来源于stack exchange,提问作者Sion C

火山引擎 最新活动