有没有办法检测窗口当前是活动的(正在显示在活动标签/窗口)在IE8?
我知道有像onfocusin / onfocus这样的事件 – 但是这不是一个完美的解决方案,因为窗口还必须获得焦点来触发事件 – 所以当用户只需切换选项卡而不触摸窗口本身就不行.
我相信这样的普通用例必须有一些简单,优雅的解决方案.
解决方法
我写了一个jQuery插件,这样做:
http://mths.be/visibility它提供了一个非常简单的API,允许您在页面的可见性状态更改时执行回调.
它通过使用支持的the Page Visibility API,并在旧版浏览器中回归到旧的焦点和模糊.
演示:http://mathiasbynens.be/demo/jquery-visibility
这个插件只需提供两个自定义事件即可使用:显示和隐藏.当页面可见性状态更改时,相应的事件将被触发.
您可以分别使用它们:
$(document).on('show',function() { // the page gained visibility });
…和…
$(document).on('hide',function() { // the page was hidden });
由于大部分时间您都需要两个事件,您最好的选择是使用活动地图.这样,您可以一次绑定两个事件处理程序:
$(document).on({ 'show': function() { console.log('The page gained visibility; the `show` event was triggered.'); },'hide': function() { console.log('The page lost visibility; the `hide` event was triggered.'); } });
该插件将检测浏览器中是否支持页面可见性API,并在$.support.pageVisibility中将此信息作为布尔值(true / false)公开:
if ($.support.pageVisibility) { // Page Visibility is natively supported in this browser }