我正在尝试制作Chrome扩展程序,以便在观看页面上的视频(例如“ www.youtube.com/watch?=xxxxxxxx”)完成播放时调用我的功能。我想使用注入脚本来做到这一点。
目前,我正在使用setInterval来检查是否video.ended==true
,但是我想找到一种没有间隔的工作方式,并且理想地只使用一些事件监听器。
我试图将onended
事件监听器添加到#movie_player和视频元素中,但这是行不通的。我也试着听readystatechange
event,但是这个也不会触发。向{movie_player添加onplay
和onplaying
事件监听器也不会触发。
有什么方法可以不用间隔来做我想做的事吗?
答案 0 :(得分:0)
在视频元素上使用ended 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查看该页面使用的更多事件:
getEventListeners(document)
(也适用于window
和任何DOM元素)ev
和其他标签右侧的event
或<html>
气泡