在Javascript中检测Youtube网站内的Youtube视频结束

velaa5lx  于 2022-12-28  发布在  Java
关注(0)|答案(1)|浏览(147)

我想用Javascript检测我在Youtube网站上观看的Youtube视频的结尾。
我知道他们有一个API,我试着用GreaseMonkey把它加载到页面中,但是好像不起作用。也许API只适用于其他网站的嵌入式视频?
以下是我目前掌握的情况:

if (window.location.href.indexOf("&enablejsapi=1") == -1)
  {
    window.location = window.location.href + "&enablejsapi=1";
  }

var api = document.createElement('script');
api.type = 'text/javascript';
api.src = "https://www.youtube.com/iframe_api";
document.body.appendChild(api);

var onFinish = document.createElement('script');
onFinish.type = 'text/javascript';
var onFinishContent = "function onPlayerStateChange(event) { console.log('test'); if (event.data == YT.PlayerState.ENDED) { console.log('end'); } }"
var textNode = document.createTextNode(onFinishContent);
onFinish.appendChild(textNode);
document.body.appendChild(onFinish);

function onPlayerStateChange(event)
{
  console.log("test");
  if (event.data == YT.PlayerState.ENDED)
    {
      console.log("end");
    }
}

正如您所看到的,我尝试通过两种方法使onPlayerStateChange函数可调用,一种是直接使用Greasemonkey,另一种是通过注入脚本节点,但这两种方法都不起作用,我从未在控制台中看到显示的"test"消息。
有人知道为什么我似乎无法加载API吗?

8wtpewkr

8wtpewkr1#

塞巴斯蒂安·西蒙的评论-回答在今年2015:

document.querySelector("video").addEventListener("ended",
    () => alert("Video ended!")});

我检查了一下,这个在2022年仍然有效。

相关问题