<template>
<div id="app">
<div id="screen"></div>
<div @click="enterfullscreen" class="but">全屏</div>
</div>
</template>
<script>
export default {
name: 'App',
data() {
return {
screen: false
}
},
created() {
let that = this
//通过一下时间判断当前页面是否处于全部状态,根据状态的不同对screen的值进行改变(监听状态)
document.addEventListener('fullscreenchange', () => {
that.screen = window.fullScreen || document.msFullscreenEnabled || document.webkitIsFullScreen
});
//火狐
document.addEventListener('mozfullscreenchange', () => {
that.screen = window.fullScreen || document.msFullscreenEnabled || document.webkitIsFullScreen
});
// 谷歌
document.addEventListener('webkitfullscreenchange', () => {
that.screen = window.fullScreen || document.msFullscreenEnabled || document.webkitIsFullScreen
});
// ie
document.addEventListener('msfullscreenchange', () => {
that.screen = window.fullScreen || document.msFullscreenEnabled || document.webkitIsFullScreen
});
},
methods: {
//控制全屏
enterfullscreen() { //进入全屏/判断页面是否全屏状态
let docElm = document.getElementById('screen')
//W3C
if (docElm.requestFullscreen) {
docElm.requestFullscreen()
this.screen = true
}
//FireFox
else if (docElm.mozRequestFullScreen) {
docElm.mozRequestFullScreen()
this.screen = true
}
//Chrome等
else if (docElm.webkitRequestFullScreen) {
docElm.webkitRequestFullScreen()
this.screen = true
}
//IE11
else if (docElm.msRequestFullscreen) {
docElm.msRequestFullscreen()
this.screen = true
}
},
}
}
</script>
<style>
#app {
width: 100vw;
height: 100vh;
}
#screen {
width: 50%;
height: 50%;
border: 1px solid red;
}
.but{
background-color: black;
color: white;
display: flex;
justify-content: center;
width: 200px;
margin-left: 20px;
}
</style>
全局思路:同时我们可以用vuex进行全局监听,然后使用watch函数监听vuex全屏值的一个变量变化,这样我们就有了一个全局的页面全屏操作组件类似图下