fullscreenchange event not firing in Chrome
Asked Answered
K

3

23

I'm trying to monitor when the browser enters fullscreen mode.

This blog is referenced everywhere I search as the guide on the fullscreen API.

http://robertnyman.com/2012/03/08/using-the-fullscreen-api-in-web-browsers/

This SO answer also claims this works.

Fullscreen API: Which events are fired?

Here is my code with jQuery, but it's not firing the event.

$(document).on("webkitfullscreenchange mozfullscreenchange fullscreenchange",function(){
        console.log("bang!");
});

Seems simple enough, but it doesn't fire in Chrome. Any idea what I'm doing wrong?

UPDATE:

Discovered something new. The events are working only if JavaScript calls the requestFullScreen API, but not if the user presses F11.

Kandace answered 13/1, 2014 at 23:33 Comment(0)
K
26

fullscreenchange events do work, but only if the fullscreen mode is triggered by requestFullscreen.

There appears to be a security restriction that prevents JavaScript from monitoring if a user manually enables fullscreen mode via a hotkey.

Alternatively, you can monitor the resize events to see if the window matches the desktop size, but this seems like a hack to me (i.e. would this work on dual-monitors?)

I decided to abandon monitoring of fullscreen mode, and just use the API to toggle the state.

Kandace answered 14/1, 2014 at 16:18 Comment(1)
document.addEventListener("keydown", e => { if(e.key == "F11") e.preventDefault(); }); works only when going to full screen. When exiting full screen doesn't work. (In Google Chrome) I don't know why.Chewink
O
1

As an alterative, onresize event or ResizeObserver should also work.

let field = document.getElementById('textarea');

field.addEventListener('resize', (event) =>
{
    console.log(1, event);
});

let resizeObserver = new ResizeObserver(entries =>
{
    for (let entry of entries)
    {
        console.log(2, entry);
    }
});

resizeObserver.observe(field);

The following one is usually not recommended - overwrites the global event, hence addEventListener.

window.onresize = function(event)
{
    console.log(1, event);
};

Related: JavaScript window resize event...

Osmosis answered 22/12, 2021 at 2:20 Comment(0)
R
1

Chrome 120 also apparently doesn't fire events for prefixed versions like webkitRequestFullScreen() and the capitalized-S version: requestFullScreen(), but does for the standardized spelling and capitalization: requestFullscreen(). I filed http://crbug.com/1511367

Rotl answered 13/12, 2023 at 22:52 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.