我有一个页面可以为用户打开word文档。在页面后面,有一个等待对话框'当用户关闭打开的文档时,呈现为关闭。 我做了一些挖掘,但我没有找到可行的解决方案。
我当然选中了这个:Is there a way to detect if a browser window is not currently active?,但只有在我切换标签或最小化浏览器窗口时才会有效。它没有检测到浏览器打开了一个带文件的窗口,浏览器也没有收回焦点,因为带有文件的窗口已关闭。
我在IE11上测试了上述解决方案(以及其他我所知道的,主要集中在连接焦点事件上)。一个复杂的可能是新窗口是从iframe中的iframe打开的(不要问,我不能改变:()),但是我使用的是window.top,还检查了窗口.top.document.hidden值,一直都是假的。
编辑:How to tell if browser/tab is active - 这个问题也没有解决问题。正如我之前提到的,可能是因为这些iframe(我使用window.top来附加事件,但仍然没有效果):
结构:
用于实现此操作的Java脚本包含在所有iframe中以及页面中。我知道这可能是模糊的解释,推荐的解决方案是改变这个Web应用程序的架构...
答案 0 :(得分:1)
var vis = (function(){
var stateKey,
eventKey,
keys = {
hidden: "visibilitychange",
webkitHidden: "webkitvisibilitychange",
mozHidden: "mozvisibilitychange",
msHidden: "msvisibilitychange"
};
for (stateKey in keys) {
if (stateKey in document) {
eventKey = keys[stateKey];
break;
}
}
return function(c) {
if (c) document.addEventListener(eventKey, c);
return !document[stateKey];
}
})();
vis(function(){
if(vis()){
// tween resume() code goes here
setTimeout(function(){
console.log("tab is visible - has focus");
},300);
} else {
// tween pause() code goes here
console.log("tab is invisible - has blur");
}
});