3
var ytplayer = document.getElementById("movie_player"); 
ytplayer.addEventListener('onStateChange', 'onPlayerChange'); 

function onPlayerChange(newState) { 
    alert('do something at least...'); 
    if(newState == 0) { 
    alert('movie has stopped'); 
    } 
} 

これは、Googleの拡張機能でYouTubeのイベントを聴いてみる方法です。映画が終わったときであっても、私に何のエラーも与えません。少なくとも、状態が変更されたとき。誰が何が間違っているのか分かりますか? コンソールでエラーが表示されません。Chrome拡張機能 - YouTubeのイベントを聴く

+0

あなたはSWFオブジェクトがDOM内にある**後**これをやっていますか? – buddhabrot

+0

** swf **がロードされるのを待つ方法はありますか? 「DOMContentLoaded」で十分ではありませんか? – SinistraD

答えて

3

あなたのコードはFirefoxでうまく動作します。プレーヤーはFlashです。ただし、ChromeはHTML5をサポートしており、プレーヤーはHTML5動画プレーヤーです。したがって、 "movie_player" idを持つ要素はありません。動画プレーヤーがChromeでFlashであることを確認してください。ビデオを右クリックし、コンテキストメニューのプレーヤー情報を参照してください。 More details about YouTube HTML5 Player

Youtube HTML5プレーヤーは現在試用中ですので、ユーザーのプレーヤーモードを検出して、少なくともYTがHTML5を完全に使用するようにフォールバックを追加する必要があります。

+0

あなたの権利は、「javascript:...」と書いても機能しますが、Firefoxの拡張機能としては機能しません(OPとは逆に、Firefox拡張機能を開発していますが、 )。 3番目(ブール値)のパラメータが必要であり、addEvenListenerの2番目のパラメータはコールバックになりますが、イベントは発生せず、他のエラーはトリガされません。 – SinistraD

1

HTML5 video要素は、独自のイベントを発生させます。今のところ、それは(それがIDを持っていないので)、それはクラス名である時に取得する最も簡単な方法のようになります。

var videoElement = document.getElementsByClassName('video-stream')[0]; 

ビデオ要素は、あなたがhere in the HTML5 spec上場見つけることができるイベントの束を、発動します。例えば

videoElement.addEventListener('pause', function(){ alert('paused!'); }) 
関連する問題