Videoタグで動画を設置したページでGoogle Chromeの
DOMException: The play() request was interrupted by a call to pause().
エラーを解消したいです。
以下のGoogleのドキュメントを参考にしてみました
DOMException: The play() request was interrupted
https://developers.google.com/web/updates/2017/06/play-request-was-interrupted
【起こっているエラー現象】
Videoタグで動画を再生するページで、初回アクセス時は問題なく自動で動画が再生されます。
しかし、リロードした際や、ブラウザバックでそのページに戻ってきた際には、
動画が最初のコマで停止した状態になっており、
ChromeのdevToolsで以下のエラーメッセージが表示されます。
DOMException: The play() request was interrupted by a call to pause().
実際のコードは以下のとおりです。
vue
1<template> 2 <div> 3 <div class="video-wrap"> 4 <video id="video" playsinline muted autoplay> 5 <source :src=source type="video/mp4" /> 6 </video> 7 </div> 8 </div> 9</template> 10 11<script> 12export default { 13 data() { 14 return { 15 source: "mov/video.mp4" 16 } 17 }, 18 mounted() { 19 const myVideo = document.getElementById('video') 20 const playPromise = myVideo.play() 21 22 if (playPromise !== undefined) { 23 playPromise.then() 24 .catch(error => { 25 console.log(error) 26 }) 27 } 28 29 myVideo.addEventListener('ended', () => { 30 this.$emit('ended-video') 31 }, false) 32 } 33} 34</script>
Promiseの記述を間違えているのか、Vueのイベントのフックさせるタイミングや記述が間違えているのか分からないのですが、Chrome以外ではautoplayがきちんと動作しています。
ちなみに、動画の再生が終了したら、this.$emit('ended-video')
で親コンポーネントに知らせていますが、こちらは正常に機能しています。
よろしくお願いいたします。
あなたの回答
tips
プレビュー