Невозможно перевести элемент <dialog> в полноэкранный режим
Я не могу положить элемент в полноэкранном режиме в Google Chrome с requestFullscreen()
, Я получаю TypeError "ошибка полного экрана", которая не так уж полезна. Это происходит ли я использую showModal
или же show
или нет. Я обычно даю модал display: none
пока не открыли, но я тоже пробовал без этого стиля.
Другие браузеры позволяют полный экран. Это включает в себя, по крайней мере, Firefox, который поддерживает modal.show
но нет modal.showModal
и Internet Explorer, который не поддерживает dialog
элементы. Пакет npm dialog-polyfill
, который я использовал, добавляет частичное <dialog>
поддержка в этих браузерах, но не влияет на то, какие браузеры разрешают или запрещают полноэкранный режим.
Является ли ошибка частью спецификации? Я не смог найти слишком много информации об ошибке, и обе спецификации, кажется, позволяют поведение, хотя я признаю, что я не слишком опытен в чтении спецификаций браузера. Другие браузеры разрешают полноэкранный режим, потому что они не полностью реализовали функцию диалога, или это ошибка в Chrome?
1 ответ
Чтение спецификации немного больше, я обнаружил, что элемент не должен поддерживать полноэкранный режим. В спецификации конкретно говорится:
Метод requestFullscreen (options) при вызове должен выполнить следующие шаги:
Если какое-либо из следующих условий ложно, установите для ошибки значение true:
Пространство имен pending - это пространство имен HTML или pending - математический элемент SVG svg или MathML. [SVG] [MATHML]
Ожидание не является элементом диалога.
Проверка готовности элемента в полноэкранном режиме к ожиданию возвращает значение true.
Полноэкранный режим поддерживается.
Этот алгоритм позволяет запрашивать полноэкранный режим.
Если кто-нибудь может предоставить больше информации о том, почему существует такое ограничение, я был бы очень заинтересован. Это не кажется разумным ограничением, так как dialog
Элемент кажется специально разработанным, чтобы хорошо работать с полноэкранным режимом, чтобы еще больше изолировать диалог от страницы.