人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

jQueryと外部HTMLファイルのload、video tagの質問です。

以下のようなScriptをHTML中に記述しました。
この場合、loadしたHTMLに含まれるvideo tag "#id_video"の
endedを取得できず、video再生終了時の"ended!"を表示できません。
このendedを取得する方法をご存知でしたら教えてください。
よろしくお願いします。

ちなみに"#id_video"のon clickは検出可能で、
"click!" を表示することはできています。
また、このscriptと同じHTMLに記述されている
video tag"id_video2"からのendedは取得できているので
"ended2!"も表示できています。


function load_movie(){

$('#load_area').load(html);
console.log("load!");

// $("#id_video").on("ended", function() {
$(document).on("ended","#id_video", function() {
console.log("ended!");
})

$(document).on("click","#id_video", function() {
console.log("click!");
})


$("#id_video2").on("ended", function() {
console.log("ended2!");
})
}

●質問者: jurilog
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● Lhankor_Mhy
●500ポイント ベストアンサー

うーん、HTML5の仕様書を斜め読みした限り明記されてないんですが、endedイベントはバブリングしないんじゃないでしょうか。

浮上(bubble up)するものは特定のイベントだけです。浮上するイベントはこのプロパティが true になっています。なので、これを調べることにより、そのイベントが浮上するものかどうかを知ることができます。

event.bubbles - DOM | MDN

ということですから、

$("#id_video").on("ended", function(e) {
 console.log(e.bubbles);
})

↑この結果がfalseなブラウザはイベントバブリングしない、つまりdocumentでendedイベントが起きないので、イベントリスナで拾えない、ということになるかと。


jurilogさんのコメント
なるほど! すべてのイベントが上位に伝わるわけではないのですね...おっしゃるとおり、video tagのendedを.bubblesでしらべたところ、OSXのsafariでもchromeでも見事にfalseでした...orz

jurilogさんのコメント
Lhankor_Mhyさんにいただいたご回答で結論のようなので、期限前ですが終了させていただきたいと思います。ありがとうございました。loadしたHTMLの扱いがよくわからず、迷っていたので助かりました。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ