2

JavaScript と HTML5 要素を使用して、コールバック関数からオーディオ ファイルを再生できるようにしたいと考えています。私が読んだ限りでは、ほとんどのモバイル デバイスで HTML5 オーディオを再生する唯一の方法は、ユーザー インタラクション (つまり、ボタンのクリックなど) によるものです。

私のシナリオは少し異なります。ボタン クリック イベントは、コールバック関数を使用して ajax 呼び出しを行い、返された結果に基づいて、別のサウンドが再生されることになっています。これはデスクトップ ブラウザでは問題なく動作しますが、Android と iPad の両方がこれをサポートしていないようです。

誰かが回避策を知っていますか?

オーディオ オブジェクトの初期化方法などを示すサンプル コード:

    var sound = new Audio('Sample.wav');
    var sound2 = new Audio('Sample2.wav');

/// Button events etc here, stock standard stuff

    function MyCallBack(e)
    {
      if(e.someValue)
       sound.play();
      else
       sound2.play();
    }

編集: 以下に概説する同様のソリューションを使用して、この問題を解決しました。私が再生したユーザーイベントで、すぐにサウンドを一時停止しました。コールバックが戻ったら、適切なサウンドの再生を再開しました

 hit.play(); hit.pause(); fail.play(); fail.pause();
4

3 に答える 3

1

audioデレクの答えを拡張するために、特定の要素に対してこれを実現するjQueryコードを次に示します。

<audio preload="auto" id="yourHTMLaudio">
    <source src="/sounds/youraudio.ogg" type="audio/ogg">
    <source src="/sounds/youraudio.mp3" type="audio/mpeg">
    <source src="/sounds/youraudio.wav" type="audio/wav">
</audio>

ボタンのclickイベントで、次を呼び出します。

$("#yourbutton").on("click", function() {
    ...
    $("#yourHTMLaudio").trigger('play').trigger('pause').prop("currentTime", 0);
    ...

次に、Ajaxdone()関数で、通常どおりに再生できます。

    ...
    $.ajax({
        ...
    }).done(function(msg) {
        ...
        $("#yourHTMLaudio").trigger('play');
        ...
    });
    ...
});
于 2015-08-26T19:25:46.837 に答える
0

HTML5 オーディオ タグは、最近のほとんどすべてのスマートフォン ブラウザーでサポートされています。

試す

    <audio autoplay="autoplay" controls="controls">  
       <source src="music.ogg" />  
       <source src="music.mp3" />  
    </audio> 
于 2013-02-26T14:31:46.857 に答える