Как прослушать выход из полноэкранного режима в Firefox?

avatar
Joey Yi Zhao
8 апреля 2018 в 00:17
834
1
0

У меня есть приведенный ниже код для входа в полноэкранный режим и прослушивания существующего полноэкранного события. Этот код отлично работает для chrome, safari, edge. Но exitListener не вызывается в firefox при выходе из полноэкранного режима. Кто-нибудь знает, как реализовать прослушиватель событий выхода в Firefox?

const el = $('.mydiv')[0];
        const rfs =
            el.requestFullscreen ||
            el.webkitRequestFullScreen ||
            el.mozRequestFullScreen ||
            el.msRequestFullscreen;
        ['webkitfullscreenchange', 'mozfullscreenchange', 'fullscreenchange', 'msfullscreenchange'].forEach(
            eventName => $('.mydiv').bind(eventName, exitListener)
        );
        rfs.call(el, Element.ALLOW_KEYBOARD_INPUT);

const exitListener = () => {
        const state = document.fullScreen || document.mozFullScreen || document.webkitIsFullScreen;
        if (!state) {
           // fullscreen exit
        }
}

Я прочитал сообщение https://coderhelper.com/questions/10706070/how-to-detect-when-a-page-exits-fullscreen, но решение там не решает мою проблему.

Источник
Luka Čelebić
8 апреля 2018 в 00:20
1

Возможный дубликат Как определить, когда страница выходит из полноэкранного режима?

Joey Yi Zhao
8 апреля 2018 в 02:53
0

Я читал этот пост раньше, но он не решает мою проблему.

Ответы (1)

avatar
Kaiido
8 апреля 2018 в 06:51
0

При выходе fullscreenchange активируется документ в Firefox, поэтому вам нужно прикрепить его туда.

const el = $('.mydiv')[0];
const rfs =
  el.requestFullscreen ||
  el.webkitRequestFullScreen ||
  el.mozRequestFullScreen ||
  el.msRequestFullscreen;
['webkitfullscreenchange', 'mozfullscreenchange', 'fullscreenchange', 'msfullscreenchange'].forEach(
  eventName => $(document).on(eventName, exitListener)
);
rfs.call(el, Element.ALLOW_KEYBOARD_INPUT);

const exitListener = () => {
  const state = document.fullScreen || document.mozFullScreen || document.webkitIsFullScreen;
  if (!state) {
    // fullscreen exit
  }
}

Как скрипка, так как iframe StackSnippet® не имеет атрибута allowfullscreen<759177777130846>