1

次の jquery を使用して、基本的な HTML ページに HTML5 オーディオ要素を追加します。オーディオ タグが自動的に再生を開始するようにします (ユーザーは、トーク ショーのオーディオ ストリームを聞くという明確な目的のために、この特定のページ/領域に移動します)。

デスクトップ Web ブラウザーとテスト用の Android デバイスでは正常に読み込まれ、再生が開始されますが、ios7 (テスト デバイスは iphone 4s) では、テスト アラートがトリガーされていることがわかりますが、オーディオ要素の再生ステータスにアクセスできないようです /まったく反応します。

自動再生を正常に設定する方法、またはios7でオーディオタグの再生ステータスを何らかの方法で「トリガー」する方法に精通している人はいますか?

そうでない場合は、ユーザー(モバイルデバイスユーザーのみ)に帯域幅の影響などを理解していることを確認/認めてもらい、手動の「クリック」を開始のトリガーとして機能させる機会を与えてくれると思います再生。

ここにいる誰かがios7でこれを行う方法に精通しているかどうかを確認したいと思いました.iOSの以前のバージョンでも問題があったかどうかはわかりません。

ありがとう。

ここに私のコードスニペットがあります:

$(document).ready(function() {

$('body').append('<audio src="EXTERNAL_AUDIO_STREAM_URL_HERE" autoload="false" autoplay="false" id="audiostream" controls/>');

// THIS WORKS FINE WHEN THIS ELEMENT IS CLICKED IN IOS7 MANUALLY, THE AUDIO STARTS FINE...
$('#startbutton').click(function(){

$('#audiostream')[0].load();
$('#audiostream')[0].play();
alert('loaded, fine...');

});


    // THIS DOES NOT START AUDIO IN IOS7 AUTOMATICALLY...
    setTimeout(function() {
        $('#startbutton').trigger('click');
    }, 2000);



});    
4

1 に答える 1

6

いいえ、iOSではできません...

出典:Safari Developer Libraryのドキュメント:
(ndmに感謝)[ソースリンクは彼のコメントにあります]

iOS の Safari (iPad を含むすべてのデバイス) では、ユーザーがセルラー ネットワークを使用していて、データ ユニットごとに課金される可能性があるため、プリロードと自動再生が無効になっています。ユーザーが開始するまで、データはロードされません。これは、JavaScript の play() および load() メソッドも、ユーザーの操作によって play() または load() メソッドがトリガーされない限り、ユーザーが再生を開始するまで非アクティブであることを意味します。つまり、ユーザーが開始した再生ボタンは機能しますが、onLoad="play()" イベントは機能しません。

于 2013-11-01T02:12:23.373 に答える