web-dev-qa-db-ja.com

JavaScriptのオーディオHTML5タグにイベントリスナーを追加する

こんにちはJavaScriptで新しいオーディオタグ要素を作成しています。これがコードです。

var audio = document.createElement("audio");
audio.setAttribute("id","myid");
audio.setAttribute("autoplay","autoplay");
document.body.appendChild(audio);

本体に追加する前に、オンエンドのイベントハンドラーを配置したいのですが、次のようなことを試しました。

audio.onended = foo;

ここで、fooは次のようなものです:function foo(){alert( 'Hola')}

そして

audio.setAttribute("onended","foo()");

どちらの場合も機能しませんでした。最初のケースでは、オーディオタグは、追加のイベントハンドラなしで追加されます。 2番目のケースでは、オーディオタグが追加されますが、onendedイベントは属性にありますが、発生しません。

誰かが何か考えを持っていますか?

前もって感謝します。

-z-

26
Zeta

試してください:

audio.addEventListener('ended', foo);

これは、イベントリスナーを追加するための正しい標準の方法です。

52
Variant

最初に、使用する前にオーディオ要素にイベントがあるかどうかを確認します。HTMLAudioElementがオーディオであるとすると、次のようにテストできますaudio.hasOwnProperty('onended')

私のブラウザに基づいて、それはサポートしていません。

3
user1217010

私はこの非常に役立つjsfiddleをGoogleから見つけました: http://jsfiddle.net/aarongloege/fzXsT/light/

{Code on /*jsFiddle*/}
1
Adil Malik