fullScreen.ts
2.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
/**
* 单个组件全屏
* @param domName
* @param htmlName
*/
export const useFullScreen = (domName: any, htmlName: HTMLHtmlElement) => {
const isFullScreen = document.fullscreenElement
const currentDatkTheme = htmlName.getAttribute('data-theme')
//特殊处理单设备多属性组件全屏显示
const setDomName = (domName: any,top0: string, top1: string) => {
domName.children[0].style.top = top0
domName.style.paddingBottom = '80px'
domName.children[1].style.top = top1
}
const setDomNameAndStyle = () => {
domName.style.background = currentDatkTheme === 'light' ? 'white' : '#18181c'
domName.children[0].style.position = 'relative'
setDomName(domName, '30px','40px')
}
if (isFullScreen) {
if (document.exitFullscreen) {
document.exitFullscreen()
domName.style.background = currentDatkTheme === 'light' ? '' : ''
}
} else {
//兼容其他浏览器
if (domName.requestFullscreen) {
domName.requestFullscreen()
setDomNameAndStyle()
} else if (domName.mozRequestFullScreen) {
domName.mozRequestFullScreen()
setDomNameAndStyle()
} else if (domName.webkitRequestFullscreen) {
domName.webkitRequestFullscreen()
setDomNameAndStyle()
} else if (domName.msRequestFullscreen) {
domName.msRequestFullscreen()
setDomNameAndStyle()
}
}
//fix 浏览器监听esc退出
function exitHandler() {
if (
!(document as any).webkitIsFullScreen &&
!(document as any).mozFullScreen &&
!(document as any).msFullscreenElement
) {
domName.style.background = currentDatkTheme === 'light' ? '' : ''
}
}
// 监听fullscreenchange事件(全屏模式的变化)
if (document.addEventListener) {
document.addEventListener('webkitfullscreenchange', exitHandler, false)
document.addEventListener('mozfullscreenchange', exitHandler, false)
document.addEventListener('fullscreenchange', exitHandler, false)
document.addEventListener('MSFullscreenChange', exitHandler, false)
}
}