2017-06-11 9 views
0

Javascriptでは、play()を使用してオーディオクリップを開始するときにAndroidでのみDOMExceptionエラーが発生しますタッチスタートイベントで呼び出される関数。DOMExceptionエラー - Javascript play()はユーザーのジェスチャーでのみ開始できますが、touchStartから呼び出しています

私はこのコードでイベント設定:

instructionsDiv.addEventListener("touchstart", touchStart, false); 

をそして、私はこのコードの機能でオーディオクリップを呼び出します。

instructionsDiv.removeEventListener("touchstart", touchStart); 
audio = new Audio(sndSources.welcome); 
audio.play(); 

私はこの警告を得る: 「を実行に失敗しました。 'HTMLMediaElement'で '再生':APIはユーザーのジェスチャーによってのみ開始できます。 "

このエラー: "未知(約束)DOMException:play()はユーザージェスチャーによってのみ開始できます。"

私の混乱は次のとおりです。 1.タッチイベントを使用してユーザージェスチャーで開始します。 2.これはAndroidでのみ発生します。それはiPhone上で正常に動作します

アイデア?

答えて

0

全く同じ問題がありました。私の試練から、Androidはメディア再生のジェスチャーとして「タッチスタート」を考慮しません。私は代わりに "mousedown"を使用し、期待どおりに動作します。

+0

残念ながら、「mousedown」イベントはChromeモバイルで発生しません –

0

ユーザージェスチャにHammerJsを使用して同じ問題を処理し、DOM例外を回避します。

const mc = new Hammer(element); 
mc.on('tap', function() {}); 
関連する問題