“如何检测浏览器”;“最小化”;及;“最大化”;JavaScript中的状态?

“如何检测浏览器”;“最小化”;及;“最大化”;JavaScript中的状态?,javascript,Javascript,我试图找到浏览器的最小化和最大化状态,因为我想相应地点击AJAX请求浏览器状态 有人知道如何使用JavaScript检测浏览器状态吗?您可以尝试使用页面可见性API,它具有布尔属性document.hidden(document.webkitHidden),该属性还检测当前页面是最小化还是最大化。这还取决于用户是否关注当前浏览器选项卡: 我认为检测这些状态的唯一可靠方法是检查HTML5提供的属性和事件(这仍然是一个实验性功能) document.hidden // Returns true i

我试图找到浏览器的最小化和最大化状态,因为我想相应地点击AJAX请求浏览器状态


有人知道如何使用JavaScript检测浏览器状态吗?

您可以尝试使用页面可见性API,它具有布尔属性document.hidden(document.webkitHidden),该属性还检测当前页面是最小化还是最大化。这还取决于用户是否关注当前浏览器选项卡:


我认为检测这些状态的唯一可靠方法是检查HTML5提供的属性和事件(这仍然是一个实验性功能)

document.hidden // Returns true if the page is in a state considered to be hidden to the user, and false otherwise.

document.visibilityState // Returns a string denoting the visibility state of the document    
您还可以对可见性的更改作出反应

document.addEventListener("visibilitychange", function() {
  console.log(document.hidden, document.visibilityState);
}, false);
请记住,这不适用于跨浏览器,仅在某些浏览器版本中可用。

我使用此代码

window.addEventListener('blur', function(){
   console.log('blur');
}, false);

window.addEventListener('focus', function(){
   console.log('focus');
}, false);
以下是:

GitHub上有一个整洁的库:

例如:

// If page is visible right now
if( ifvisible.now() ){
  // Display pop-up
  openPopUp();
}
我已经在所有浏览器上测试了1.0.1版,并确认它可以与以下浏览器一起使用:

  • IE9,IE10
  • FF 26.0
  • 铬34.0
可能还有所有更新的版本

不完全适用于:

  • IE8-始终指示选项卡/窗口当前处于活动状态(.now()始终为我返回true)

如果介于两者之间呢?我很少运行windows Maximized。在我的情况下,当我最小化浏览器或按alt tab键时,页面可见性API的状态不会改变。这是一种预期的行为,因为如果我最小化浏览器,它基本上处于隐藏状态,对吗?当window.resize在OSX上无法注意到“reduced to dock”(图标化/最小化)和“restore from dock”(还原)操作时,您在这里展示的这项技术似乎可以工作。干得好这似乎无法检测到点击窗口并以另一种方式聚焦,但这可能是预期的行为,这非常好。非常感谢你