LoginSignup
2
0

More than 3 years have passed since last update.

インライン要素の動画をボタン一つでどの端末でも全画面再生にする方法【Fullscreen APIがきかない場合の対応】

Posted at

こんにちは、Yuiです。

今回インライン要素で表示している動画を、ボタン一つで拡大再生させる方法について書きます。

背景

playsinlineを指定しているビデオタグに対して、クリックアクションで全画面再生をさせたい場面があり、Fullscreen APIを読むとそれぞれメソッドがブラウザごとに違うらしいので、条件分岐で対応しました。

image.png

また、公式ではIE非対応らしく書いているますが、どうやらIE11からサポートされたらしい(参考特定の要素を全画面(フルスクリーン)にするFullscreen API)ので、以下のように書きました。(IE10以前はもう知らん..)

<video ref="video" src="sample.mp4" playsinline />
<button @click="fullScreen">全画面再生</button>
<script>
export default {
  methods: {
    fullScreen() {
      const video = this.$refs.video;
      if (video.webkitRequestFullscreen) {
        video.webkitRequestFullscreen();
      } else if (video.mozRequestFullScreen) {
        video.mozRequestFullScreen();
      } else if (video.msRequestFullscreen) {
        video.msRequestFullscreen();
      } else if (video.requestFullscreen) {
        video.requestFullscreen();
      } else {
        alert("全画面再生できません。");
      }
    },
  },
};
</script>

ただ、これだとスマートフォン非対応なので、スマートフォン用のメソッドを追加する必要がありました。

解決策

アップルのドキュメントをしっかり読むと書いてました。
webkitEnterFullscreenというらしいです。
そこでこう書き換えて終わり。

<video ref="video" src="sample.mp4" playsinline />
<button @click="fullScreen">全画面再生</button>
<script>
export default {
  methods: {
    fullScreen() {
      const video = this.$refs.video;
      if (video.webkitRequestFullscreen) {
        video.webkitRequestFullscreen();
      } else if (video.webkitEnterFullscreen) {
        video.webkitEnterFullscreen();
      } else if (video.mozRequestFullScreen) {
        video.mozRequestFullScreen();
      } else if (video.msRequestFullscreen) {
        video.msRequestFullscreen();
      } else if (video.requestFullscreen) {
        video.requestFullscreen();
      } else {
        alert("全画面再生できません。");
      }
    },
  },
};
</script>

Androidに関しては調べられなかったのですが、stack overflowでのこの質問と回答を読む限りAndroidでも動くっぽいですね〜。

感想

やむなしな気もしますが、条件分岐が多くて気持ち悪いですね。
他にもっと良い書き方あれば教えて下さい〜。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0