【问题标题】:Chrome Extension: Stop all tabs and windows except for active one and if playing audioChrome 扩展程序:停止所有选项卡和窗口(活动选项卡和窗口除外)以及播放音频
【发布时间】:2018-08-24 08:57:43
【问题描述】:

如何停止所有选项卡和窗口,除了活动的和播放音频的?我发现这很有帮助:

如果您希望内容脚本始终发生,您可以在 >manifest 中定义它:

如果您的内容脚本的代码应始终注入,请使用 content_scripts 字段在>扩展清单中注册它

"content_scripts" : [{
  "matches": ["<all_urls>"],
  "js": ["stop.js"],
  "run_at": "document_start"
}],

这样,您就知道在页面加载开始时会在每个页面旁边加载 stop.js。然后你可以实现你的逻辑。非常简单的解决方案:

// stop.js
setTimeout(() => {window.stop()}, 10000);

问题是:没有提及活动窗口、活动选项卡、选项卡或活动音频。我一直想这样做一段时间。基本上,现在的网站还活着(javascript 溢出)并且允许黑色幽默,我希望它们在加载完成后死掉,但音频/视频网站除外(javascript 终止)。还有人提到:

如果您希望这也发生在子框架中,您可能还需要考虑将“all_frames”:true 添加到内容脚本>声明。

它会是这样的吗:

"content_scripts" : [{
  "matches": ["<all_urls>"],
  "js": ["stop.js"],
  "run_at": "document_start"
  "all_frames": true
}],

【问题讨论】:

    标签: javascript windows google-chrome-extension tabs exit


    【解决方案1】:

    您可以使用Page Visibility API 尤其是脚本中的 document.hidden 属性,以了解当前选项卡是否可见以防止“停止”它:

    Document.hidden(只读)
    如果页面处于对用户隐藏的状态,则返回 true,否则返回 false。

    此 API 还提供事件来检测页面可见性变化,以防您想对它们做出反应(在选项卡之间切换)。

    关于播放音频的标签,我建议您在扩展程序中添加背景脚本 并使用chrome.tabs API 从标签中发送messages 以检查哪些正在播放音频。
    API 提供了一个布尔型audible 属性,如下所述:

    标签在过去几秒钟内是否发出声音(但如果也静音,则可能听不到)。相当于扬声器音频指示灯是否显示。

    你也可以看看Great Suspender Chrome extension的代码,你可能会发现一些有用的代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-17
      • 2012-01-09
      • 2017-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-13
      • 1970-01-01
      相关资源
      最近更新 更多