在 3 分钟后暂停来自 chrome 控制台的 youtube 视频

Posted

技术标签:

【中文标题】在 3 分钟后暂停来自 chrome 控制台的 youtube 视频【英文标题】:Pause a youtube video from the chrome console after it reaches 3 minutes 【发布时间】:2018-12-26 14:01:24 【问题描述】:

我可以暂停视频 globalThis.ytPlayerUtilsVideoTagPoolInstance.l[0].pause()

我可以通过globalThis.ytPlayerUtilsVideoTagPoolInstance.l[0].currentTime获取视频的当前时间

视频到达currentTime > 180时如何自动触发暂停?

【问题讨论】:

【参考方案1】:

一种简单的方法是轮询。

const player = globalThis.ytPlayerUtilsVideoTagPoolInstance.l[0]
setTimeout(function polling() 
    if (player.currentTime < 180) 
        setTimeout(polling, 1000)
    else
        player.pause()
, 1000)

另一种方式:

const player = globalThis.ytPlayerUtilsVideoTagPoolInstance.l[0]
const timer = setInterval(() =>  // no need of named function as no 'async recursion' is needed
    if (player.currentTime >= 180) 
        player.pause()
        clearInterval(timer)
    
, 1000)

【讨论】:

感谢您按要求完成这项工作。如果我理解正确,函数轮询每秒都会在自身内部调用自身,直到达到条件?这叫递归吗?每秒执行一次递归的事实称为“轮询”? 我称之为异步递归,因为它实际上不是递归。代码所做的是检查是否满足条件,如果不满足,则在下一秒安排检查。在我看来,轮询意味着定期检查情况。该代码实现了与setInterval 类似的功能。但是如果您选择使用setInterval 定期运行一段代码,您应该记住在条件满足后取消它。添加了一个带有 setInterval 的示例。这两种风格应该达到相同的目标。

以上是关于在 3 分钟后暂停来自 chrome 控制台的 youtube 视频的主要内容,如果未能解决你的问题,请参考以下文章

通过中断的连接从 Internet 下载文件

如何使用 Chrome DevTools 在 AngularJS 异常中暂停脚本执行?

即使我暂停消费者,Spring Kafka 也总是在 5 分钟后重新平衡

[STM32学习]定时器实现码表(数码管显示)

[STM32学习]定时器实现码表(数码管显示)

Chrome 将在 60 秒后关闭我的 ajax 帖子