fscreen: Cross-Browser Fullscreen API

1.2.0 · active · verified Wed Apr 22

fscreen is a small, vendor-agnostic JavaScript utility library that provides a unified interface to the browser's Fullscreen API. It abstracts away browser-specific prefixes (like `webkit` or `moz`) for methods and properties such as `requestFullscreen`, `exitFullscreen`, `fullscreenElement`, and event listeners like `fullscreenchange` and `fullscreenerror`. The current stable version is 1.2.0. As a lightweight wrapper, fscreen aims to simplify cross-browser fullscreen implementation without introducing significant overhead or polyfills. It doesn't have a strict release cadence, typically releasing new versions as needed to adapt to browser changes or fix issues. Its primary differentiator is its simplicity and focus on providing a direct, standardized access layer to the native Fullscreen API, ensuring consistent behavior across different browsers without requiring developers to manage vendor prefixes manually.

Common errors

Warnings

Install

Imports

Quickstart

This quickstart demonstrates how to check for Fullscreen API support, register for fullscreen change events, and request fullscreen mode for a specific element upon a user interaction, cleaning up when exiting.

import fscreen from 'fscreen';

const initFullscreen = () => {
  if (fscreen.fullscreenEnabled) {
    // Store a reference to the handler to remove it later if needed
    const fullscreenChangeHandler = () => {
      if (fscreen.fullscreenElement !== null) {
        console.log('Entered fullscreen mode');
        // Example: add a class to the body when in fullscreen
        document.body.classList.add('is-fullscreen');
      } else {
        console.log('Exited fullscreen mode');
        // Example: remove the class when exiting
        document.body.classList.remove('is-fullscreen');
        // Clean up the event listener if no longer needed
        // fscreen.removeEventListener('fullscreenchange', fullscreenChangeHandler, false);
      }
    };

    fscreen.addEventListener('fullscreenchange', fullscreenChangeHandler, false);

    const myElement = document.getElementById('my-fullscreen-target');
    const enterFullscreenButton = document.getElementById('enter-fullscreen-btn');

    if (myElement && enterFullscreenButton) {
      enterFullscreenButton.addEventListener('click', () => {
        fscreen.requestFullscreen(myElement);
      });
    } else {
      console.warn("Required elements (my-fullscreen-target or enter-fullscreen-btn) not found.");
    }

  } else {
    console.log('Fullscreen API is not supported by this browser.');
    const statusDiv = document.getElementById('fullscreen-status');
    if (statusDiv) {
      statusDiv.textContent = 'Fullscreen is not available.';
    }
  }
};

// Call initFullscreen after the DOM is loaded
document.addEventListener('DOMContentLoaded', initFullscreen);

// Example HTML for context:
// <div id="my-fullscreen-target" style="background: lightblue; width: 100%; height: 100%; display: flex; justify-content: center; align-items: center;">Content</div>
// <button id="enter-fullscreen-btn">Enter Fullscreen</button>
// <div id="fullscreen-status"></div>

view raw JSON →