Невозможно перевести элемент <dialog>в полноэкранный режим. - PullRequest
0 голосов
/ 19 февраля 2019

Я не могу перевести элемент в полноэкранный режим в Google Chrome с requestFullscreen().Я получаю TypeError «ошибка полного экрана», которая не так уж полезна.Это происходит независимо от того, использую я showModal или show, или ни то, ни другое.Я обычно даю модальный display: none, пока он не открывается, но я также пробовал без этого стиля.

Другие браузеры разрешают полный экран.Это включает, по крайней мере, Firefox, который поддерживает modal.show, но не modal.showModal, и Internet Explorer, который не поддерживает dialog элементы.Пакет npm dialog-polyfill, который я использовал, добавляет частичную поддержку <dialog> в этих браузерах, но не влияет на то, какие браузеры разрешают или запрещают полноэкранный режим.

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

1 Ответ

0 голосов
/ 19 февраля 2019

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

Метод requestFullscreen (options) при вызове должен выполнить следующие шаги:

Если какое-либо из следующих условий является ложным, установите для ошибки значение true:

  • Пространство имен pending - это пространство имен HTML, или pending - математический элемент SVG svg или MathML.[SVG] [MATHML]

  • pending не является элементом диалога.

  • проверка готовности полноэкранного элемента к ожиданиювозвращает true.

  • Полноэкранный режим поддерживается.

  • Этот алгоритм может запрашивать полноэкранный режим.

Если кто-нибудь может предоставить больше информации о том, почему существует такое ограничение, я был бы очень заинтересован.Это не выглядит разумным ограничением, так как элемент dialog выглядит специально для того, чтобы хорошо работать с полноэкранным режимом, чтобы еще больше изолировать диалог от страницы.

...