有没有一种方法可以检查浏览器是否处于全屏模式(用户按下f11后)?
类似这样的代码:
if (window.fullscreen) {
// it's fullscreen!
}
else {
// not fs!
}
谢谢。
Steerpike的回答很好,但我的评论:
非常感谢,但这个答案对FF来说不够。在Chrome中,我可以设置一个小的容差,但在FF中,地址栏和选项卡需要一段时间才能消失,这意味着在按下F11之后,检测到的window.innerWidth仍然太小。
有没有一种方法可以检查浏览器是否处于全屏模式(用户按下f11后)?
类似这样的代码:
if (window.fullscreen) {
// it's fullscreen!
}
else {
// not fs!
}
谢谢。
Steerpike的回答很好,但我的评论:
非常感谢,但这个答案对FF来说不够。在Chrome中,我可以设置一个小的容差,但在FF中,地址栏和选项卡需要一段时间才能消失,这意味着在按下F11之后,检测到的window.innerWidth仍然太小。
这适用于所有新的浏览器:
if (!window.screenTop && !window.screenY) {
alert('Browser is in fullscreen');
}
警告: 这个答案是针对一个非常旧的版本的Firefox发布的。你可能在这里找不到你要的答案,请继续寻找。
在Firefox 3中,window.fullScreen可用 (https://developer.mozilla.org/en/DOM/window.fullScreen)。
因此,你可以像这样做:
if((window.fullScreen) ||
(window.innerWidth == screen.width && window.innerHeight == screen.height)) {
} else {
}
fullscreenElement
仅适用于由JS触发的全屏模式,而不适用于用户按下F11键。 - rivif(window.innerWidth == screen.width && window.innerHeight == screen.height) {
} else {
}
function _fullscreenEnabled() {
// FF provides nice flag, maybe others will add support for this later on?
if(window['fullScreen'] !== undefined) {
return window.fullScreen;
}
// 5px height margin, just in case (needed by e.g. IE)
var heightMargin = 5;
if($.browser.webkit && /Apple Computer/.test(navigator.vendor)) {
// Safari in full screen mode shows the navigation bar,
// which is 40px
heightMargin = 42;
}
return screen.width == window.innerWidth &&
Math.abs(screen.height - window.innerHeight) < heightMargin;
}
这个在我关心的每个浏览器(Chrome,FF,IE,Safari/Mac,Opera)中都能工作。
更新:在Mac上,全屏模式下的Opera只隐藏“常规”的OSX菜单,因此高度仅相差几个像素,这对我来说太危险了,所以它不能在Opera/Mac上工作。
这个在主流浏览器(IE、Firefox、Opera、Chrome)中都可以工作。
function isFullscreen(){
if($.browser.opera){
var fs=$('<div class="fullscreen"></div>');
$('body').append(fs);
var check=fs.css('display')=='block';
fs.remove();
return check;
}
var st=screen.top || screen.availTop || window.screenTop;
if(st!=window.screenY){
return false;
}
return window.fullScreen==true || screen.height-document.documentElement.clientHeight<=30;
}
Opera浏览器的CSS:
.fullscreen { display: none; }
@media all and (view-mode: fullscreen){
.fullscreen { display: block; }
}
$(window).width()
和$(window).height()
查找浏览器视口,如果它们符合一组定义好的视口尺寸(600 x 480、1280 x 800等),那么你就可以知道它很可能是全屏。此外,你还可以设置事件处理程序,例如fll
键和其他可能的快捷键,以定义浏览器全屏。
document.fullscreenElement
来获取元素,如果它存在则返回该元素,否则返回null
。内部和屏幕的宽度不可靠,例如,如果你打开开发者工具,内部尺寸将不同于屏幕尺寸。你可以将document.onfullscreenchange
分配给此方法,在全屏和非全屏之间切换时得到即时响应。 - tscpp