在 youtube.com 从 YouTube 播放器状态触发事件

Trigger an event from a youtube player state on youtube.com

我正在尝试在视频结束于 youtube.com 时触发扩展中的事件。

我无法从其他扩展中找到任何示例。

到目前为止我尝试了什么:

编辑:我像这里一样注入了脚本:

现在通过注入,alert('test') 确实出现了,所以注入可以达到那个点。但后来什么也没发生,知道为什么吗?

//script.js file
        alert('test');
        function onPlayerStateChange(event) {        
            if(event.data === YT.PlayerState.ENDED) {          
                alert('done');
            }
        }

或:

//script.js file
  alert('test');
  var player;
  function onYouTubeIframeAPIReady() {
    player = new YT.Player( 'player', {
      events: { 'onStateChange': onPlayerStateChange }
    });
  }
  function onPlayerStateChange(event) {
     if(event.data === YT.PlayerState.ENDED) {          
         alert('done');
        }
  }

事件常量来自:https://developers.google.com/youtube/js_api_reference?csw=1#Events

我的清单文件:http://chopapp.com/#j89brn5fbk.js是空的,cnt.js就像在脚本注入link中一样。 script.js以上。

由于您没有嵌入并且您期待 HTML5 播放器,因此您根本不需要 任何 技巧,包括注入页面。

您有一个 DOM,其中有一个(单个)<video> 元素。您可以照常附加到它的事件。

示例:

// Content script; assumes the page already created the <video> element
var video = document.getElementsByTagName("video")[0];
if(video) {
  video.addEventListener("ended", function() {
    console.log("Video ended");
  })
} else {
  console.error("Video element not found");
}

您可以在 MDN Media Events reference 查看其他活动。