web-dev-qa-db-ja.com

jqueryおよびHTML5オーディオタグを使用してオーディオソースを切り替える

他の解決策は1つしか見つかりませんでしたが、それは不完全だったので、ここで助けが必要です。

私はオーディオをセットアップしています:

<audio id="player" controls="controls">
          <source id="ogg_src" src="lib/audio/barger01.ogg" type="audio/ogg" />
          <source id="mp3_src" src="lib/audio/barger01.mp3" type="audio/mp3" />
          Your browser does not support the audio element.
    </audio>

動的に生成されたリンクのテーブルを使用して、トラックを変更します。

<div id="audio_list">
   <a href="#" class="track" data-location="http://www.newoggtrack.ogg">sample</a>
</div>

私はこのjqueryを持っていて、トラックを変更するために何をすべきかわからない

$('.track').click(function(){

    load_track = $(this).attr('data-location');//gets me the url of the new track

    change_track(load_track);// function to change the track of the loaded audio player without page refresh preferred...

});

この機能を見つけましたが、正しい方法で使用していません

 function change_track(sourceUrl) {

        audio.empty();
        $("#ogg_src").attr("src", sourceUrl).appendTo(audio);
        /****************/
        audio[0].pause();
        audio[0].load();//suspends and restores all audio element
        /****************/
    }

audio = $("<audio>").attr("id", "player")
                        .attr("preload", "auto");
25
Daniel Hunter

変更関数は次のようになります。

function change(sourceUrl) {
    var audio = $("#player");      
    $("#ogg_src").attr("src", sourceUrl);
    /****************/
    audio[0].pause();
    audio[0].load();//suspends and restores all audio element

    //audio[0].play(); changed based on Sprachprofi's comment below
    audio[0].oncanplaythrough = audio[0].play();
    /****************/
}

問題はaudio.empty()とオーディオ変数でした。空のオーディオタグを追加しようとしましたが、ブラウザにオーディオタグを書き戻しませんでした。

74
Justice Erolin

「変更」はすでにjQueryユニバースの関数であるため、関数の名前を変更することもできます。

6
Jay Blanchard