JavaScript - определение, просматривает ли пользователь Интернет в полноэкранном режиме

Я не хочу открывать свой сайт в полноэкранном режиме (поскольку это невозможно без использования Flash) или открывать его в «режиме киоска».

Я хочу попросить пользователя нажать F11 на своей клавиатуре, чтобы перевести браузер в полноэкранный режим. И я хочу знать, сделал ли он/она это. Есть ли способ определить, просматривается ли текущее окно в полноэкранном режиме?

Заранее спасибо за ваши ответы.


person kremuwa    schedule 20.10.2010    source источник


Ответы (2)


Это работает для меня, по крайней мере, в firefox 3.6:

function is_fullscreen()
{
    return window.outerWidth == screen.width && window.outerHeight == screen.height;
}

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

Обновление: это определенно не работает в IE7.

person Bobby Jack    schedule 20.10.2010
comment
Кажется, что в IE свойства externalWidth/Height не определены. Но меня это не огорчает, ведь мне нужно, чтобы мое приложение работало только в Firefox и Chrome. И поэтому я принимаю ваш ответ :). Спасибо! - person kremuwa; 20.10.2010
comment
в Firefox также есть свойство window.fullscreen - person kapa; 20.10.2010
comment
Отлично - это роскошь, которую редко имеет любой из нас! :) Смотрите мой комментарий к другому ответу: обработка IE, если вы действительно этого хотите. Также стоит отметить, что если проблемы с высотой действительно являются камнем преткновения, вы можете просто проверить ширину. Теоретически неполноэкранное окно всегда должно иметь как минимум пиксельную границу с каждой стороны (у меня по 2 пикселя с каждой стороны), а это означает, что ширина окна всегда будет равна ширине экрана, только если включен полноэкранный режим. Я не уверен, как странные боковые панели могут повлиять на это, поэтому вам, вероятно, следует протестировать и их. - person Bobby Jack; 20.10.2010
comment
@bazmegakapa: ну, это звучит как лучший вариант во всех отношениях! :) - person Bobby Jack; 20.10.2010

Вы можете поиграть с screen.width/height и document.body.clientWidth/Height, но я никогда не пробовал...

person kapa    schedule 20.10.2010
comment
Это не совсем плохая идея. Например, я мог бы проверить if(screen.height - document.body.clientHeight ‹ 50) и предположить, что если это правда, сайт находится в полноэкранном режиме. Но это также зависит от настроек просмотра пользователя - если он/она скрывает все панели инструментов и т. д. - clientHeight может быть почти как в полноэкранном режиме, но на самом деле это не так. Я буду использовать ваше решение на данный момент, но я все еще жду других советов. Все равно спасибо! - person kremuwa; 20.10.2010
comment
@kremuwa: если вы можете использовать этот подход (то есть не быть точным), то все будет в порядке. Посмотрите на мой пример и используйте document.documentElement.clientHeight (anc .clientWidth) для IE. Строка заголовка должна увеличиться примерно на 80 пикселей, но строка состояния удалена из значения высоты IE, поэтому вам нужно принять это во внимание. Это сложно, но вы должны быть «достаточно уверены», что используется полноэкранный режим. - person Bobby Jack; 20.10.2010