这是我想要的场景:
我正在检查是否存在应用程序(使用协议检测),如果它不存在,exe文件会自动开始下载。网页会定期检查应用程序是否已成功下载,安装完成后,浏览器会提示打开该应用程序。
工作原理:
下载自动开始。该网页正在定期检查是否存在应用程序。
什么不起作用:
下载exe后,当我开始下载时,焦点会发生变化,网页会认为该应用已经启动,而该应用实际上还没有安装。
我需要一种焦点检查机制,可以检测特定应用程序何时启动并且焦点转移并且不响应任何其他焦点转移。
这是我的代码:
_registerEvent = function(target, eventType, cb) {
if (target.addEventListener) {
target.addEventListener(eventType, cb);
return {
remove: function() {
target.removeEventListener(eventType, cb);
}
};
} else {
target.attachEvent(eventType, cb);
return {
remove: function() {
target.detachEvent(eventType, cb);
}
};
}
},
checkIfHasProtocol = function($el) {
openUriWithTimeoutHack(url);
},
openUriWithTimeoutHack = function(protocol) {
var timeout = setTimeout(function() {
handler.remove();
checkIfHasProtocol(protocol);
}, 5000);
var target = window;
while (target != target.parent) {
target = target.parent;
}
var handler = _registerEvent(window, "blur", onBlur);
function onBlur() {
if (tabVisible() && isBlurred) {
clearTimeout(timeout);
handler.remove();
//App has been launched
}
}
}
window.location = protocol;
};
tabVisible(function() {
if (tabVisible() && inCheck) {
inCheck = false;
}
});
window.addEventListener("blur", function() {
isBlurred = true;
});
window.addEventListener("focus", function() {
isBlurred = false;
inCheck = false;
});