【发布时间】:2019-12-09 20:11:55
【问题描述】:
我喜欢在工作时使用 Youtube 上的 Chrome 标签来听音乐,但每隔一小时音乐就会停止,并且会出现一条消息“你还在吗?”显示在其上。 是的,我还在那里,就像每天一样,一天 7 次 :)
所以我安装了一个名为“自定义样式表和脚本”的 Chrome 扩展程序来运行这个简单的 JavaScript 内容:
setInterval(function(){
let overlay = document.querySelector('iron-overlay-backdrop');
if(overlay) overlay.click();
}, 1000);
这很好用,但前提是我在 YouTube 标签上。如果我正在制作另一个音乐,音乐最终会停止,我必须单击 YT 选项卡才能运行此 JavaScript(所以毕竟不是真正的胜利)。
我发现一些帖子提到非活动标签中的 setInterval 优先级较低,每秒只会触发一次或两次,在我的情况下它们根本不会触发。
感谢您提供有关查看内容的任何提示:)
【问题讨论】:
-
也许该站点在后台运行时不显示
ytd-app,因此您的 if 分支无法运行。 -
我实际上在之后添加了 ytd-app 测试,因此不会在每个选项卡上执行此代码
-
如果 YT 需要一个小时才能知道您是否在那里,那么您无需将
setInterval()设置为每秒工作。为什么不将其设置为 10 分钟,所以将 1000 更改为 600000。其想法是,在非活动选项卡中调用过多的setInterval()最终会完全停止它,而每 10 分钟调用一次可能不会。 -
我建议使用 MutationObserver 而不是 setInterval。
-
我会看看 MutationObserver 并在这里发布我的结果!
标签: javascript google-chrome google-chrome-extension youtube