1. ホーム
  2. javascript

[解決済み] The play() request was interrupted by the call to pause()" というエラーを防ぐには?

2022-02-07 13:47:34

質問内容

ユーザーがクリックすると音が鳴るようなホームページを作りました。音が重ならないようにするために、コードを追加する必要がありました。

n.pause();
n.currentTime = 0;
n.play();

しかし、それではエラーが発生します。 The play() request was interrupted by a call to pause()
サウンドイベントが別のトリガーの直後にトリガーされるたびに表示されます。サウンドは問題なく再生されますが、このエラーメッセージが常に表示されるのを防ぎたいのです。何かアイデアはありますか?

解決方法を教えてください。

この問題は、最近も発生しました。 play()pause() . この問題に関連した言及があるように見えます。 こちら .

として パトリック が指摘する。 pause はプロミス(または何か)を返さないので、上記の解決策はうまくいきません。MDN には pause() の中で メディア要素のためのWC3ドラフト と書かれています。

メディア.ポーズ()

paused属性をtrueに設定し、必要に応じてメディアリソースを読み込みます。

そのため paused 属性で指定します。

に基づいています。 この素晴らしいSOの回答 そのため、エラーなしで安全に play() を実行することができます。

var isPlaying = video.currentTime > 0 && !video.paused && !video.ended 
    && video.readyState > video.HAVE_CURRENT_DATA;

if (!isPlaying) {
  video.play();
}

それ以外の場合 パトリック 's 答え は動作するはずです。