Chrome 扩展:如何禁用页面可见性 API

2024-01-09

我正在编写一个 Chrome 扩展程序,需要防止网页触发文档 VisibilityChange 事件。至少我需要能够覆盖 document.visibilityState (即使它是只读属性)。如果不可能,因为此扩展程序仅供我使用,不会出现在 Chrome 扩展程序商店中,有什么方法可以配置我的 Chrome 浏览器来实现我想要的功能?我只需要在 Chrome“开发者模式”打开时使用此扩展程序,其他时间都不需要。

我希望有人能想出一种创造性的方法来实现这一目标。谢谢。

请注意! 4年前的一个答案中有一个解决方案,在较新版本的Chrome中不再生效:欺骗或禁用页面可见性 API https://stackoverflow.com/questions/18928417/spoof-or-disable-the-page-visibility-api

自己测试一下:

// This codes worked 4 years ago but not anymore
var c='(function(){var a=Node.prototype.addEventListener;Node.prototype.addEventListener=function(e){if(e=="visibilitychange"||e=="webkitvisibilitychange"){}else a.apply(this,arguments)}})()'
, E=document.documentElement;
E.setAttribute('onreset', c);
E.dispatchEvent(new CustomEvent('reset'));
E.removeAttribute('onreset');

// THIS WILL STILL LOG THE STATES EVEN WITH THE ABOVE CODE RUNNING
document.addEventListener("visibilitychange", function() {
    console.log( document.visibilityState );
});

如果在 Chrome 中不可能,是否有 Firefox/Safari/Opera 浏览器代码可以实现此目的?


这是我的解决方案:

for (event_name of ["visibilitychange", "webkitvisibilitychange", "blur"]) {
  window.addEventListener(event_name, function(event) {
        event.stopImmediatePropagation();
    }, true);
}

我添加了blur事件,因为我想跳过的视频(everfi.net)使用它来检测我何时切换窗口。阻止该事件以及visibilitychange and webkitvisibilitychange成功了:)

我还修改了扩展的清单,以便它可以在 iframe 内运行。

完整代码(chrome扩展):https://github.com/NavinF/dont https://github.com/NavinF/dont

已确认使用以下狗牌:

Google Chrome   63.0.3239.132 (Official Build) (64-bit)
Revision    2e6edcfee630baa3775f37cb11796b1603a64360-refs/branch-heads/3239@{#709}
OS  Mac OS X
JavaScript  V8 6.3.292.49
Command Line    /Applications/Google Chrome.app/Contents/MacOS/Google Chrome --flag-switches-begin --flag-switches-end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Chrome 扩展:如何禁用页面可见性 API 的相关文章

  • JavaScript - babel-preset-env 不为 IE11 转换箭头函数

    我很难尝试配置 Babel 来转译 IE11 可以理解的代码 特别是箭头函数 跑步npx webpack mode development使用我的配置不会转换我的代码中的箭头函数 在eval 在生成的代码中的语句中 我可以看到所有实例都未转
  • 闭包和异步 Node.js 函数

    All 尝试了解 Node js 上下文中的闭包 异步调用 我有以下代码 timer setInterval pollOID 1000 function pollOID for channel in channels session get
  • onclick链接/按钮获取数据属性值

    span class btn btn block btn inverse btn icon glyphicons home i i Daily span span class btn btn block btn inverse btn ic
  • 多个模板槽的相同槽内容

    在vuejs中 有没有一种方法可以为多个插槽设置相同的内容 而无需复制粘贴 So this
  • 我以为我了解范围

    有人可以告诉我为什么 x 的最后一次记录等于0而不是1 我想因为它是在函数之外声明的 所以它具有全局范围 然后在函数中它的值设置为1并且该值将保持原样一个全球性的 我知道函数内的第一个 x 值是全局的 因为没有 var 关键字声明的任何变量
  • 为什么我的 css 在 IE9 中无法正确显示?

    几个小时前 我对我的 WordPress 主页做了一个小改动 现在 IE9 中出现了一些以前不存在的随机奇怪 CSS 问题 我曾使用 IE 的开发工具来尝试找出问题所在 但该工具与 firebug 相比实在是太糟糕了 而且问题只出现在 IE
  • Firebase 停止监听 onAuthStateChanged

    从版本 3 0 0 开始 我很难删除身份验证状态更改侦听器 要根据文档启动侦听器 firebase auth onAuthStateChanged function user handle it 但是 我在文档中找不到任何涉及删除身份验证状
  • 使用 c out 标签时不会出现新行

    我将 n 附加到字符串中 当使用 s 标签文本区域时 已附加换行符并且数据逐行显示 但是当我使用 c out 标签时 数据显示在一行中 如何使用 c out 标签逐行显示 StringBuffer sb new StringBuffer f
  • up() 和 down() 与 Ext.getCmp()

    我很困惑我需要在 up down 和 Ext getCmp ID 之间使用哪一个作为 grep 对象 对我来说 定义对象的 ID 并通过 Ext getCmp ID 检索对象更容易 而且代码看起来更干净 例如 console log thi
  • html 标题的最大长度

    有谁知道我可以为 html title 属性输入的最大长度是多少以及是否允许使用特殊字符 根据当前的 HTML 4 和 5 规范 标题长度没有限制 但 IE 浏览器有 512 个字符的限制HTML 4 01 http msdn micros
  • jquery 自动完成额外参数

    我使用 jquery 自动完成 我可以将 extraParams 传递给 asp net 中的 webservice 吗 我的 WebMethod 将如何获得它 您传递一个额外的参数函数 如下所示 controlId setOptions
  • Bootstrap 多选限制问题

    我使用创建了一个多选下拉列表引导多选 http davidstutz github io bootstrap multiselect 我需要在选项选择中设置一个限制 这里我将其设置为 5 如果达到限制 我只需禁用其他选择选项 它就可以完美工
  • 检测滚动到 DIV 底部

    我想检测我是否到达了 div 的底部 我的 div 高度为 400px 溢出隐藏 我不知道正常高度但超过400px 我正在使用这段代码 但它不起作用 任何想法 if article txt scrollTop article txt hei
  • 从网页获取 chrome.storage.sync.get

    大家好 我希望能够从网页内的内联脚本访问 chrome storage sync 中存储的信息 由我的扩展程序注入 当尝试使用 chrome storage sync 时 无法从 未定义 调用同步 同样 我无法调用 chrome runti
  • Firefox 本地主机上的 Twilio 屏幕共享?

    目前 Firefox 中本地主机上的屏幕共享会引发以下错误 The request is not allowed by the user agent or the platform in the current context 这是我的代码
  • 将 html

    我有一些服务器端代码当前支持 http 字节范围请求 没有任何问题 但是 我希望能够在将转码后的块发送到客户端之前使用 ffmpeg 即时转码视频文件 位于磁盘上 但 ffmpeg 要求我在获取字节时给它一个寻道时间范围来自客户 给定客户端
  • jQuery:array[i].children() 不是函数

    以下代码的灵感来自http ignorethecode net blog 2010 04 20 footnotes http ignorethecode net blog 2010 04 20 footnotes 当您将光标移到脚注符号上时
  • Jquery 脉动改变颜色或图像

    我正在尝试使用 jquery 脉动代码让 div 改变颜色 但我希望它从红色变为黑色 但我听说要做到这一点 你必须下载某个插件 所以我希望它脉动为图片 到目前为止我有这两个代码 img src 36 gif alt width 105 he
  • 将画布下载为 PNG 图像[重复]

    这个问题在这里已经有答案了 当我尝试将画布下载为 PNG 图像时 浏览器会在新页面中打开该图像 但不下载它 我的下载代码 btnScaricaEtichetta click function console log Download loc
  • 如何使相对div居中?

    我一直在尝试让以下代码工作几个小时 但没有成功 您能帮我将项目 div 居中吗 即使页面放大和缩小时 这是我的 HTML 和 CSS bottom position absolute top 100 left 0 right 0 backg

随机推荐

  • Gradle maven-publish 不会构建独立的 spring-boot 应用程序

    当我使用以下命令构建 spring boot 应用程序 到独立的 jar 时gradle build 生成正确的工件 生成的 jar 包含所有依赖的 jar 并且是可执行的 我还配置了 maven publish 插件 如下所示 publi
  • 如何为R中的lapply函数内部的一行矩阵设置if条件

    我有一个数据集 需要成对计算 Kendall tau 在每对变量之间 我想将结果存储在矩阵中 但是 我想找到结果 如果当前行的每个值都小于特定值 那么我希望循环停止并且不计算下一个相关性 下一行 并返回0所有下一行的所有条目的值 我想这样做
  • glassfish v3 vs tomcat 7 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 您推荐哪一款用于网络 为什么 我不推
  • UITableViewCell + 自动布局 + RTL

    我正在将我的应用程序本地化为希伯来语 这是一种 RTL 语言 每个单元格都具有设置为前导 尾随的水平约束 这些约束在 RTL 语言上会自动反转 最终结果与预期完全一致 但是当滚动表视图时 UITableViewCell 子视图动画化从LTR
  • 如何使用 Gitlab CI 运行程序设置非常简单的部署?

    我想自动将新工作从我的 Gitlab 存储库部署到在生产服务器上运行的实时网站 实时网站是 GIT 存储库克隆live branch 我的问题 每次 构建 发生时 跑步者似乎都会重新克隆我的存储库 进入 builds 这是强制性行为吗 我想
  • 如何使用具有扩展功能的 kubernetes 来处理作业队列

    我需要一个基于 docker python 工作人员的可扩展队列处理 我的想法转向了 kubernetes 但是 我不确定最好的控制器 服务 基于天蓝色的功能 我获得传入的http流量 将简单的消息添加到存储队列中 需要处理这些消息并将结果
  • JPA2.1/ Hibernate 5.2 使用 Hibernate Tools 通过 ANT Maven 任务生成 ddl

    我已经从 Hibernate 4 3 更新到最新版本 目前是 5 2 10 Final 我需要 maven 生成 ddl 模式 以便当我运行 drop 数据库然后创建模式时 它将获取生成的 schmea 我正在尝试在 Maven 中运行 a
  • 将字符字段转换为 R 中的季度日期

    我有一个 tsv 其中有一个季度格式的日期字段 名为 trim trim 1992 4 1993 1 当我将文件作为数据帧加载时 R 将该字段作为字符导入 我无法转换它 即使我尝试 我也只能得到 NA df trim lt as Date
  • IE8不支持querySelectorAll

    我尝试使用document querySelectorAll 但是 IE8 抛出错误 即 对象不支持此属性或方法 var titleCheckBox document querySelectorAll Here http www quirk
  • Golang MGO - 插入或更新未按预期工作

    我正在用 Go 运行一个网站 并且使用MGO https labix org mgo用于连接我的 MongoDB 数据库的包 我正在处理用户的登录 并且我正在尝试使用 funcUpsert https godoc org gopkg in
  • 文档点击不在元素 jQuery 中

    使用 jQuery 如何检测非特定元素的点击 并相应地执行操作 我有以下 JavaScript master click function slave toggle document not master slave click funct
  • 在 32 位程序中使用 64 位驱动程序。视窗

    这只是一个半路编程问题 首先 我有一个 PCI Express 卡和 32 64 位驱动程序 目标操作系统必须是 Windows 64 位系统 我读到 在 Vista64 下 所有驱动程序都必须经过认证 64 位驱动程序 这是 64 位操作
  • AttributeError:“列表”对象没有属性“set_model”

    我尝试在训练深度卷积神经网络时使用早期停止和模型检查点来保存最佳模型 但是 我收到以下错误 callback set model model AttributeError list object has no attribute set m
  • Symfony 2:从存储库创建服务

    我正在学习 Symfony 并且一直在尝试使用存储库创建服务 我已经从generate entity 创建了我的存储库和实体 所以它们应该没问题 到目前为止 我在 services yml 中得到的内容是 parameters mytest
  • 如何在不加载空页面的情况下清理UIWebView的内容?

    我需要清理 UIWebView 的内容 以便重用它 但我在其委托方法中有一些身份验证处理代码 所以我不想加载像 about blank 这样的空页面来清理它 因为它会触发我的身份验证处理代码 那么有办法做到这一点吗 另外 通过重用它 我需要
  • 在 Rust 项目的 C 绑定上运行 jextract 时出现“cstdarg 文件未找到”

    我正在尝试与 Java 的巴拿马项目一起使用 Rust 编写一个简单的整数加法函数 使用生成绑定后cbindgencrate 运行 jextract 时出现以下错误 jextract t org adder L l adder java r
  • 多个InfoWindowAdatper的

    我有一张地图 我在其中创建不同类型的标记 我无法将信息窗口适配器分配给标记 哎呀 这不是很好 我只能为整个地图分配 InfoWindowAdapter 至少我认为 我的问题是我想根据我点击的内容显示不同类型的信息窗口 是否是设置一个 Inf
  • 如何用特定的颜色填充整个画布?

    如何填充整个HTML5
  • 步骤属性不适用于 HTML 输入类型“时间”

    我想要一个时间输入字段 用户只能选择完整的时间 在我的示例中 它将是 00 00 01 00 02 00 等等 这就是为什么我将步长属性设置为 3600 因为 3600 秒等于一小时 这是我的代码
  • Chrome 扩展:如何禁用页面可见性 API

    我正在编写一个 Chrome 扩展程序 需要防止网页触发文档 VisibilityChange 事件 至少我需要能够覆盖 document visibilityState 即使它是只读属性 如果不可能 因为此扩展程序仅供我使用 不会出现在