ユーザーが実行したクリックイベントのハンドラー以外の状況では、iOS 4.2.1のMobile Safariでオーディオメディアを再生できないようです。それでも、player.play()
が非同期で呼び出された場合(_ajax, setTimeout
_など)は機能しません。
player.load()
の前にplayer.play()
を呼び出してみました。ハンドラーがplayer.play()
を呼び出すdom要素でクリックイベントをトリガーしようとしました。オーディオとビデオの両方のタグを使用してみました。
IOS 4.2.1より前に機能していた抜け穴はすべて閉じられているようです。何か案は?
IOS 4.2.x以降、タッチスタートなどのユーザー入力イベントがない場合、メディアのダウンロードは開始されません。
したがって、答えはnoです。JavaScriptなどでメディアを自動再生する方法はありません。
4.2.1でビデオ/オーディオファイルを自動的に再生する方法が1つあります。 iframeを作成し、そのソースをメディアファイルのURLに設定して、iframeを本文に追加します。自動再生されます。
var ifr=document.createElement("iframe");
ifr.setAttribute('src', "http://mysite.com/myvideo.mp4");
ifr.setAttribute('width', '1px');
ifr.setAttribute('height', '1px');
ifr.setAttribute('scrolling', 'no');
ifr.style.border="0px";
document.body.appendChild(ifr);
他の人がここで述べたように、Appleのドキュメントによると、MobileSafariはビデオタグのautoplay属性をサポートしていません。ただし、iOS 6では機能します。これは、iOS 6.0.1(およびおそらくiOS 6.1)でAppleが修正したバグのようです。
IOS 6.0で動作している偶然に遭遇した場合でも、iOS 6で動作している自動再生に依存しないでください。
-マイケル
回避策として、load()/ play()コードをクリックイベントに関連付け、プログラムでクリックイベントをトリガーしてみました。このアプローチはデスクトップサファリでは機能しましたが、モバイルサファリでは機能しませんでした。
これはどう?
サウンドマネージャー2でオーディオスプライトを作成し、最初のユーザー操作からプリロードしてキャッシュし、必要に応じて再生します。
それはうまくいくでしょうか?
これは、昨夜の4.2アップグレードまでiPadで機能していました。
_$(function() {
var Beep = document.createElement('audio');
Beep.setAttribute('src', 'beep-23.mp3');
Beep.load();
Beep.play();
}
_
私のBeep.play();
は引き続きクリックイベントで機能しますが、最初のBeep.play()
は機能しなくなりました...
自動再生は、ヘッドフォンジャックを使用したiPhone 5(iOS 6)で(私のテストでは)サポートされています。
実行中の第3世代iPadでIOS 6、HTML5タグの自動再生が突然機能し始めました!(IOS 6を数週間インストールしました、そして私がこの機能をすぐにテストしたと確信していますが、今夜は機能していることに気づきました。)モバイルSafariがファイルのアップロードをサポートする機能を許可されていたことがわかりましたが、Appleからこの通知があったことは覚えていません
<form><input type="file" .../></form>
-私が必要としたもう1つの機能ですがApple=は保留されていました。