Mar*_*cik 10 javascript tabs internet-explorer-8
IE8中有没有办法检测窗口当前是否处于活动状态(正在活动选项卡/窗口中显示)?
我知道有像onfocusin/ 这样的事件onfocus- 但这不是一个完美的解决方案,因为窗口也必须获得焦点才能触发事件 - 所以当用户只是切换标签而不触摸窗口本身时,这不起作用.
我相信这种普通用例必须有一些简单,优雅的解决方案.
Mat*_*ens 13
我编写了一个执行此操作的jQuery插件:http://mths.be/visibility它为您提供了一个非常简单的API,允许您在页面的可见性状态发生变化时执行回调.
它通过使用支持它的页面可见性API来实现,并且回归到旧版focus和blur旧版浏览器中.
演示: http ://mathiasbynens.be/demo/jquery-visibility
此插件只提供两个自定义事件供您使用:show和hide.页面可见性状态更改时,将触发相应的事件.
您可以单独使用它们:
$(document).on('show', function() {
// the page gained visibility
});
Run Code Online (Sandbox Code Playgroud)
…和…
$(document).on('hide', function() {
// the page was hidden
});
Run Code Online (Sandbox Code Playgroud)
由于大多数时候您都需要这两个活动,因此您最好的选择是使用活动地图.这样,您可以一次绑定两个事件处理程序:
$(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.');
}
});
Run Code Online (Sandbox Code Playgroud)
该插件将检测浏览器是否本机支持页面可见性API,并将此信息作为布尔值(true/ false)公开在$.support.pageVisibility:
if ($.support.pageVisibility) {
// Page Visibility is natively supported in this browser
}
Run Code Online (Sandbox Code Playgroud)
这是使用 jQuery 实现的一个简单任务:
$(function() {
window.isActive = true;
$(window).focus(function() { this.isActive = true; });
$(window).blur(function() { this.isActive = false; });
});
Run Code Online (Sandbox Code Playgroud)
全局 isActive 变量确定选项卡/窗口是否处于活动状态。
| 归档时间: |
|
| 查看次数: |
8486 次 |
| 最近记录: |