const [prefixName, setPrefixName] = useState(''
)
//
浏览器是否支持全屏 默认支持
const [isFullscreenData, setIsFullscreenData] = useState(
true
)
//
是否全屏
const [isFullscreen, setIsFullscreen] = useState(
false
)
const screenRef = useRef(null)
2. 判断浏览器是否支持全屏
// 判断是否支持全屏
const canFullscreen = () => {
let fullscreenEnabled = false
// 判断浏览器前缀
if (document.fullscreenEnabled) {
fullscreenEnabled = document.fullscreenEnabled
} else if (document.webkitFullscreenEnabled) {
fullscreenEnabled = document.webkitFullscreenEnabled
setPrefixName('webkit')
} else if (document.mozFullScreenEnabled) {
fullscreenEnabled = document.mozFullScreenEnabled
setPrefixName('moz')
} else if (document.msFullscreenEnabled) {
fullscreenEnabled = document.msFullscreenEnabled
setPrefixName('ms')
if (!fullscreenEnabled) {
setIsFullscreenData(false)
3. 需要操作全屏的元素
const screenRef = useRef(null)
<div ref={screenRef}>
<a onClick={() => setFullScreen()}>
{!isFullscreen ? '全屏' : '返回'}
4. 指定元素全屏
// 全屏
* @param {String} dom 要全屏的dom
const domFullscreen = dom => {
const methodName = prefixName === '' ? 'requestFullscreen' : `${prefixName}RequestFullScreen`
dom[methodName]()
// 退出全屏
const exitFullscreen = () => {
const methodName = prefixName === ''
? 'exitFullscreen'
: `${prefixName}ExitFullscreen`
document[methodName]()
// 全屏和返回的操作
const setFullScreen = () => {
if (isFullscreenData) {
if (isFullscreen) {
exitFullscreen()
setIsFullscreen(false)
} else {
setIsFullscreen(!isFullscreen)
domFullscreen(screenRef.current)
} else {
message.info('该浏览器不支持全屏模式')