Невозможно перевести элемент <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) при вызове должен выполнить следующие шаги:

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

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

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

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

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

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

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

Другие вопросы по тегам