# Enter and Exit Browser Fullscreen Mode
Most browsers have implemented the fullscreen feature for web pages and provide keyboard shortcuts, usually F11 and Esc keys. In addition to keyboard shortcuts, W3C has also defined two APIs for fullscreen. With these APIs, we can control the fullscreen display of web pages using JavaScript.
# Fullscreen API
In the W3C standard, the methods are as follows:
Enter fullscreen: Element.requestFullscreen (opens new window)
Exit fullscreen: Document.exitFullscreen (opens new window)
Element in current fullscreen mode: Document.fullscreenElement (opens new window)
However, the methods required to be used in some versions of browsers are different. Refer to the table below:
Feature | webkit | Gecko(Firefox) | IE11 |
---|---|---|---|
Enter fullscreen | webkitRequestFullScreen | mozRequestFullScreen | msRequestFullScreen |
Exit fullscreen | webkitExitFullscreen | mozCancelFullScreen | msExitFullscreen |
Element in current fullscreen mode | webkitFullscreenElement or (webkitCurrentFullScreenElement, mobile safari) | mozFullScreenElement | msFullscreenElement |
Although W3C has defined the standard for the fullscreen API, it is not well supported in various browsers. Therefore, it is necessary to perform compatibility processing when using it.
# Compatibility Encapsulation
Enter fullscreen
function requestFullscreen() { const html = document.documentElement; const rfs = html.requestFullscreen || html.mozRequestFullScreen || html.webkitRequestFullScreen || html.msRequestFullscreen; return rfs.call(html); }
Exit fullscreen
function exitFullscreen() { const efs = document.exitFullscreen || document.mozCancelFullScreen || document.webkitExitFullscreen || document.msExitFullscreen; return efs.call(document); }
Get the element in current fullscreen mode
function getFullscreenElement() { return document.fullscreenElement || document.webkitFullscreenElement || document.webkitCurrentFullScreenElement || document.mozFullScreenElement || document.msFullscreenElement; }
# Check if it is in fullscreen mode
Since the Document.fullscreen
(opens new window) property has been deprecated, according to the MDN documentation, we can determine if it is in fullscreen mode by checking if Document.fullscreenElement
is equal to null
.
function isFullscreen() {
return getFullscreenElement() !== null;
}
However, according to can I use (opens new window), although fullscreenElement
can be obtained with different prefixes, its compatibility is still not satisfactory. In scenarios with higher compatibility requirements, the Screen API (opens new window) can be used as an additional means to determine if it is in fullscreen mode.
function isFullscreen() {
const fullscreenElement = getFullscreenElement();
if (fullscreenElement === undefined) {
return window.innerWidth === screen.availWidth && window.innerHeight === screen.availHeight;
}
return fullscreenElement !== null;
}
# Event Listening
After entering and exiting fullscreen mode, the browser will trigger the fullscreenchange
(opens new window) event. Related non-standard events include:
webkitfullscreenchange
mozfullscreenchange
MSFullscreenChange
According to the information provided on can I use (opens new window), the compatibility of the fullscreenchange
event is not very good. For improved compatibility across various browsers and devices, Foxit PDF SDK for Web offers the UIEvents.fullscreenchange
(opens new window) event.
Here's an example of how to listen for the fullscreenchange
event using the addUIEventListener
function provided by the PDFUI library:
pdfui.addUIEventListener(UIExtension.UIEvents.fullscreenchange, isFullscreen => {
// do something here
})
Note that before using the UIEvents.fullscreenchange
event, you need to make sure that the full-screen
addon is loaded during the PDFUI initialization, or use AllInOne.js or AllInOne.mobile.js. For more details, please refer to the Addon Introduction section.
Alternatively, you can choose not to use the provided event and instead use the resize
event to achieve the same result as fullscreenchange
. The specific approach is as follows:
let _isFullscreen = isFullscreen(); // Refer to the "Check if it is in fullscreen mode" section
window.addEventListener('resize', () => {
const currentIsFullscreen = isFullscreen();
if(currentIsFullscreen !== _isFullscreen) {
// This code block is executed when the fullscreen mode changes, which is equivalent to fullscreenchange
}
_isFullscreen = currentIsFullscreen;
})
Both approaches allow you to perform certain actions when the fullscreen mode changes in the browser. Choose the one that suits your needs and browser compatibility requirements.