自動再生するvideoをJavaScriptで埋め込む機会があったのですが、iOS系の端末だけ再生されないということがあったので、その際の対応方法をメモしておきます。
うまくいかなかった場合
HTMLは以下のようにします。
<div class="box"> <div id="mv"></div> <div class="front"></div> </div>
#mv内にvideoタグを追加する想定です。
次にCSSです。
.box {
position: relative;
}
#mv {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
#mv video {
width: 100%;
height: 100%;
}
.front {
position: relative;
width: 100%;
padding-top: 56.25%; /* 360/640*100 */
}
最後にJavaScriptです。
var video = document.createElement('video');
video.muted = true;
video.autoplay = true;
video.loop = true;
video.playsinline = true;
video.src = 'video.mp4';
document.getElementById('mv').appendChild(video);
videoを作成して各属性を追加して、#mvに追加しています。
これで問題ないと思っていたのですが、iOS端末で自動再生が開始されませんでした。
うまくいかなかった場合のデモページ
対応方法
いろいろ試してみた結果、playsinlineの設定方法を変更するとiOSでも再生できるようになりました。
var video = document.createElement('video');
video.muted = true;
video.autoplay = true;
video.loop = true;
video.setAttribute('playsinline', '');
video.src = 'video.mp4';
document.getElementById('mv').appendChild(video);
setAttribute()を使って設定する形に変更しています。
対応後のデモページ
まさにこの問題に直面していました。
こちらの方法を試したところ、iOS safariで自動再生されることを確認できました。
助かりました!ありがとうございます。
玄鵬さん
コメントありがとうございます。
問題解決されたようでよかったです。