全屏
全屏按钮、F11、Esc有冲突,用插件screenfull解决
npm
踩坑点:不要安装最新版本,安装5.0.2即可
html
npm install screenfull@5.0.2 --no-fund1
.vue
html
<span class="fullScreen" :title="titleTip">
<img @click="isScreenFull" v-if="!isFullscreen" src="~@/assets/images/home-FullScreen.png" />
<img @click="isScreenFull" v-else src="~@/assets/images/outFullScreen.png" />
</span>1
2
3
4
2
3
4
.scss
css
// 全屏按钮
.fullScreen {
position: absolute;
top : 21px;
right : 50px;
width : 24px;
height : 24px;
cursor : pointer;
display : flex;
img {
height: 100%;
width : 100%;
}
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
引入
js
<script>
import screenfull from 'screenfull';1
2
2
data
js
data() {
return {
isFullscreen: false,
};
},1
2
3
4
5
2
3
4
5
mounted
js
mounted() {
this.screenFull(); //调用监听事件
},1
2
3
2
3
methods
监听Esc事件
js
// 监听Esc事件;
screenFull() {
window.addEventListener("keydown", this.KeyDown, true);
// 这些监听,可以监听到esc按键按下导致的全屏变化,但是监听不到F11的打开全屏的变化,isScreenFull
document.addEventListener("fullscreenchange", () => {
this.isFullscreen = !this.isFullscreen; // 切换全屏的图标
});
document.addEventListener("mozfullscreenchange", () => {
this.isFullscreen = !this.isFullscreen;
});
document.addEventListener("webkitfullscreenchange", () => {
this.isFullscreen = !this.isFullscreen;
});
document.addEventListener("msfullscreenchange", () => {
this.isFullscreen = !this.isFullscreen;
});
},1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
监听浏览器F11
js
// 监听浏览器F11
KeyDown(event) {
if (event.keyCode === 122) {
event.returnValue = false;
this.isScreenFull(); // 触发全屏的方法
}
},1
2
3
4
5
6
7
2
3
4
5
6
7
全屏方法
js
// 全屏方法
isScreenFull() {
if (!screenfull.enabled) {
return false;
}
screenfull.toggle(); // 这个方法会请求全屏,如果当前是全屏则会退出全屏。
},1
2
3
4
5
6
7
2
3
4
5
6
7
注意:原网址写的是 if (!screenfull.isEnabled) {
log输出没有isEnabled这个属性,只有enabled。