Как сохранить полноэкранное состояние в Firefox?

Следуя документу API Mozilla на полноэкранном режиме, я разместил на своем веб-сайте следующий код: он просто берет весь документ (элемент html) и делает страницу в полноэкранном режиме, когда пользователь щелкает в любом месте страницы, а затем еще один щелчок, страница возвращается к норме.

var videoElement = document.getElementsByTagName('html')[0];

function toggleFullScreen() {
    if (!document.mozFullScreen) {
        if (videoElement.mozRequestFullScreen) {
            videoElement.mozRequestFullScreen();
        }
    } else {
        if (document.mozCancelFullScreen) {
            document.mozCancelFullScreen();
        } 
    }
}

window.addEventListener("click", function(e) {
    toggleFullScreen();
}, false);

Мой вопрос в том, как я могу сохранить это полноэкранное состояние, поэтому каждый раз, когда загружается Firefox, эта страница все еще находится в полноэкранном режиме. Или любое обходное решение? Это для Firefox для Android.

Ответ 2

После моих экспериментов и спецификаций это не выполнимо, из браузера клиента javascript

Это api требует взаимодействия с пользователем. Мы не можем активировать полноэкранный режим по сценариям.

Из спецификации fullscreen api:

Полноэкранный режим поддерживается, если ранее не было установлено предпочтение пользователя, риск безопасности или ограничение платформы.

Алгоритму разрешено запрашивать полноэкранный режим, если выполняется одно из следующих утверждений:

The algorithm is triggered by user activation.

The algorithm is triggered by a user generated orientation change.

https://fullscreen.spec.whatwg.org/#model

Об активационных событиях:

Алгоритм запускается при активации пользователя, если выполняется одно из следующих условий:

Задача, в которой работает алгоритм, в настоящее время обрабатывает поведение активации, значение атрибута clickTrusted которого истинно.

Задача, в которой выполняется алгоритм, в настоящее время запускает прослушиватель событий для события, чей атрибут isTrusted является истинным и тип которого является одним из следующих:

менять

щелчок

DblClick

MouseUp

pointerup

сброс

Отправить

touchend

https://html.spec.whatwg.org/multipage/interaction.html#triggered-by-user-activation

Мы не можем запускать полноэкранные экраны из сценариев, или если это так, сценарий должен запускаться пользователем.

Включение имитации клика не будет работать, это регулярное поведение, сделанное для защиты пользовательского интерфейса.

С некоторым размышлением мы не можем больше согласиться с этим, представьте, что любая страница объявлений может запускать полноэкранные экраны, веб-браузер будет адским!

Вы сказали в комментарии: "Я единственный пользователь здесь"

Что вы можете сделать, если используете unix: ((возможно, альтернативы существуют в других os)).

Используя midori (облегченный браузер веб-кита), это запустит настоящий полноэкранный режим.

midori -e Fullscreen -a myurl.html

Насколько я знаю, нет способов запустить firefox или chromium в полноэкранном состоянии из командной строки.

Но то, что можно сделать, - вызвать щелчок F11 на системном уровне, сосредоточившись на хорошем окне сразу после запуска страницы. ((sendkey в оболочке adroid adb)))

xdotool может это сделать.

Вот командная строка, в которой будет запущен firefox с myurl.html, найдите самый последний идентификатор окна firefox, затем запустите ключ F11 в этом окне.. (Нажмите F11 еще раз, чтобы выйти)

firefox myurl.html && xdotool search --name firefox | tail -1 | xdotool key F11

Это должно быть легко адаптировать для других браузеров.

В качестве последней альтернативы взгляните на electron или nw.js

Ответ 3

взгляните на это, добавьте в Firefox, я не пробовал, поскольку я отправляю это с мобильного телефона, это описание действительно говорит о том, что он может заставить начать работу в полноэкранном режиме. Я просто цитирую их описание.

Сохраняет последнее состояние или запуск силы в полноэкранном режиме навсегда! Простая и полная для этой цели.

Изменение: и ссылку на него https://addons.mozilla.org/en-US/firefox/addon/mfull/

Ответ 4

Как насчет использования localStorage?

function goFullScreen() {
  if (videoElement.mozRequestFullScreen) {
    localStorage.setItem('fullscreenEnabled', true)
    videoElement.mozRequestFullScreen();
  }
}

window.onload = function () {
  if (localStorage.getItem('fullscreenEnabled') === true) {
    goFullScreen();
  }
};

function toggleFullScreen() {
  if (!document.mozFullScreen) {
    goFullScreen();
  } else {
    if (document.mozCancelFullScreen) {
      document.mozCancelFullScreen();
      localStorage.setItem('fullscreenEnabled', false)
    }
  }
}

window.addEventListener("click", function(e) {
  toggleFullScreen();
}, false)