IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> vue 自定义全屏组件 -> 正文阅读

[JavaScript知识库]vue 自定义全屏组件

1. FullScreen.vue

<template>
	<span class="full_screen" @click="toggleFullScreen"></span>
</template>

<script>
import { mapActions, mapMutations, mapState } from 'vuex'
export default {
	name: 'FullScreen',
	data(){
		return {

		}
	},
	computed: {
		...mapState('fullScreen', {
			fullScreen: state => state.fullScreen,
		}),
	},
	created(){
	},
	mounted(){
		
		window.addEventListener('keydown', this.myKeyEvent)
    
    if(document.exitFullscreen) {
      document.addEventListener('fullscreenchange', this.changeFullscreenVar)
    } else if(document.mozCancelFullScreen) {
      document.addEventListener('mozfullscreenchange', this.changeFullscreenVar)
    } else if(document.msExitFullscreen) {
			document.addEventListener('MSFullscreenChange', this.changeFullscreenVar)
			document.addEventListener('MSFullscreenError', function(){
				console.log("浏览器不支持");
			});
    } else if(document.webkitCancelFullScreen) {
      document.addEventListener('webkitfullscreenchange', this.changeFullscreenVar)
    }
	},
	methods: {
		...mapActions('fullScreen', ['handleFullScreen']),
		...mapMutations('fullScreen', ['changeFullscreenVar']),
		myKeyEvent(ev) {
			let e = ev || window.event;
			console.log('keydown', e.keyCode);
      let key = e.keyCode
      if (key === 122) {
        console.log('F11', e)
				// 阻止默认的键盘事件
				if(e.preventDefault){
            e.preventDefault();
        }else if(e.stopPropagation){
            e.stopPropagation();
        }else{
            e.returnValue = false;
        }  
				this.handleFullScreen()
				// e.returnValue = false
				// return false;
      }
    },
		toggleFullScreen() {
			console.log(1);
			this.handleFullScreen()
		},
	},
  beforeDestroy() {
    window.removeEventListener('keydown', this.myKeyEvent)
    if(document.exitFullscreen) {
      document.removeEventListener('fullscreenchange', this.changeFullscreenVar)
    } else if(document.mozCancelFullScreen) {
      document.removeEventListener('mozfullscreenchange', this.changeFullscreenVar)
    } else if(document.msExitFullscreen) {
      document.removeEventListener('MSFullscreenChange', this.changeFullscreenVar)
    } else if(document.webkitCancelFullScreen) {
      document.removeEventListener('webkitfullscreenchange', this.changeFullscreenVar)
    }
  }
}
</script>

<style scoped>
.full_screen {
	display: inline-block;
	font-size: 24Px;
	width: 30Px;
	height: 30Px;
	color: #e4f6ff;
	margin-left: 40Px;
	background: url("~@/assets/header-full-screen.png") no-repeat;
}
</style>

2. fullScreen.module.js

const state = {
	fullScreen: false,
	element: document.documentElement
};

const mutations = {
	// 改变全屏状态变量
	changeFullscreenVar(state) {
		state.fullScreen = !state.fullScreen
	},
	// 进入全屏
	lanchFullscreen(state) {
		var element = state.element
		if(element.requestFullscreen) {
			element.requestFullscreen()
			return true
		} else if(element.mozRequestFullScreen) {
			element.mozRequestFullScreen()
			return true
		} else if(element.msRequestFullscreen) {
			element.msRequestFullscreen()
			return true
		} else if(element.webkitRequestFullscreen) {
			element.webkitRequestFullScreen()
			return true
		}
	},
	// 退出全屏
	exitFullscreen(state) {
		if(document.exitFullscreen) {
			document.exitFullscreen()
			return true
		} else if(document.mozCancelFullScreen) {
			document.mozCancelFullScreen()
			return true
		} else if(document.msExitFullscreen) {
			document.msExitFullscreen()
			return true
		} else if(document.webkitCancelFullScreen) {
			document.webkitCancelFullScreen()
			return true
		}
	},
	
};

const actions = {
	// 暴露给外界的处理方法,调用这个方法,自行判断是要全屏还是退出全屏
	handleFullScreen({ commit }) {
		// debugger;
		// 注意:要在用户授权全屏后才能获取全屏的元素,否则 fullscreenEle为null
		var fullscreenEle = fullscreenEle = document.fullscreenElement || document.mozFullScreenElement || document.msFullscreenElement || document.webkitFullscreenElement;
		console.log(fullscreenEle, '全屏元素...')
		if(fullscreenEle) {
			console.log('exit..')
			commit('exitFullscreen')
			// commit('changeFullscreenVar')
		} else {
			console.log('lanch..')
			commit('lanchFullscreen')
			// commit('changeFullscreenVar')
		}
	}
};

export default {
  namespaced: true,
  state,
  mutations,
  actions,
};
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-04-24 09:20:29  更:2022-04-24 09:23:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 1:05:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码