gpt4 book ai didi

javascript - 如何检测 YouTube 已从注入(inject)的脚本(使用 chrome 扩展)完成视频播放?

转载 作者:行者123 更新时间:2023-12-03 05:35:11 24 4
gpt4 key购买 nike

我正在尝试制作 Chrome 扩展程序,当观看页面上的视频(如“www.youtube.com/watch?=xxxxxxxx”)完成播放时调用我的函数。我想使用注入(inject)的脚本来做到这一点。
目前我正在使用 setInterval 来检查 video.ended==true但我想找到一种无间隔工作的方法,并且理想地使用一些事件监听器。

我尝试添加 onended #movie_player 和视频元素的事件监听器,但这不起作用。我也试过听 readystatechange event但这一个也不开火。添加 onplayonplaying #movie_player 的事件监听器也不会触发。

有什么方法可以在不使用间隔的情况下做我想做的事吗?

最佳答案

使用ended video 元素上的 DOM 事件:

var videoElement = document.querySelector('video');
videoElement.addEventListener('ended', function(event) {
console.log(event);
});

请注意,Youtube 站点使用 AJAX 导航,这意味着您的扩展程序的内容脚本仅在站点在任何给定选项卡中打开时运行一次。为 yt-navigate-finish 添加监听器检测此类导航:
document.addEventListener('yt-navigate-finish', function(event) {
var videoElement = document.querySelector('video');
videoElement.addEventListener('ended', function(event) {
console.log(event);
});
});

使用 devtools 查看页面使用的更多事件:
  • in Chrome :打开元素检查器并切换到“事件监听器”子面板
    或输入 getEventListeners(document)在控制台中(也适用于 window 和任何 DOM 元素)
  • in Firefox :打开 Inspector 并单击 evevent <html> 右侧的气泡和其他标签
  • 关于javascript - 如何检测 YouTube 已从注入(inject)的脚本(使用 chrome 扩展)完成视频播放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51566104/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com