2

私はChrome拡張機能を作成しています。ユーザーがyoutube.comで動画を見ている間に動画の開始/終了を検出したいと思います。私の状況と私が読んだ他のチュートリアルとの違いは、私自身のYouTubeビデオを自分のサイトに埋め込むのではなく、ユーザーがYouTubeで見ているビデオのイベントを検出したいのです。Chrome拡張コンテンツスクリプトを使用してyoutubeビデオイベントを検出

は、今のところ私のmanifest.jsonをファイルには、コンテンツスクリプトの次の行を持っています

"content_scripts": [ 
    { 
     "matches": ["http://*/*","https://*/*"], 
     "js": ["js/jquery.js", "js/iframe_api.js", "js/contentScript.js"], 
     "all_frames": true 
    } 
], 

私はjqueryのダウンロードしたとiframe_api.jsがhttps://www.youtube.com/iframe_apiの内容です。マイcontentScript.jsファイルには、私はちょうどビデオの準備ができたときに、コンソールに何かを印刷する、非常に簡単です:

function onYouTubeIframeAPIReady() { 
    var player; 
    player = new YT.Player('ytplayer', { 
     events: { 
      'onReady': onPlayerReady, 
     } 
    }); 
} 

function onPlayerReady(event) { 
    console.log('It worked!'); 
} 

誰かが私を助けてもらえますか?コンテンツスクリプトでもこれを行うことができますか、またはコンテンツスクリプトが住んでいる「独立した環境」にないため、YouTube動画のiframeにアクセスできませんか?

+0

コンテンツスクリプトはDOMにのみアクセスできます。彼らは、javascriptのコンテキストにアクセスすることはできませんが、DOMノードにリスナーを添付することができます。 – chrmod

+0

@chrmodそれは理にかなっています。 YouTubeのiframeがDOMの一部とみなされているかどうかはわかりませんでしたが、それ以上の点検ではjavascriptを使って動的に読み込まれているようですので、コンテンツスクリプトがアクセスできないと思われます。私はしかし、自分自身の代替ソリューションを見つけた、私の答えは以下を参照してください。 – GabeMeister

答えて

2

この質問を投稿した直後に私は答えを見つけました。 YouTubeのiframe apiではなく、html5 apiを使用しています。私はビデオが終了し、それが正常に動作すると、メッセージを印刷するために、次のコンテンツスクリプトを変更しました。

var vid = $('video').get(0); 

vid.addEventListener('ended', function(e) { 
    console.log('The video ended!'); 
}); 
+0

「youtube iframe apiではなく、html5 apiを使用していますか?」を展開できますか?後者はどこから正確に得られますか?それはどこに置かれますか? – lightningleaf

関連する問題