我需要实现一个javascript,我可以检测我的深层链接是否有效,如果它有效,那么它应该保持相同但如果它不起作用那么它必须启动下载文件。 为此,我使用超时功能来做到这一点。这是我使用的示例代码。
setTimeout(function () { window.location = "https://itunes.apple.com/appdir"; }, 25);
window.location = "appname://";
但是这个代码在android和ios上工作得很好但是它在桌面浏览器中产生了问题。在Deeplink正常工作后的桌面浏览器中,超时功能不会停止,它会重定向到下载页面。
所以最后我想要一些可以检测我的Deeplink是否有效的事件,所以我可以设置cleartimeout函数来防止重定向到下载URL
答案 0 :(得分:0)
对于桌面浏览器,请考虑使用窗口模糊侦听器并相应地执行操作 模糊监听器会告诉您用户是否离开了标签页或浏览器
read_string
答案 1 :(得分:0)
我会在超时时尝试使用时间戳表达式。
这样的事情(根据需要使用阈值):
defaults = [1,2,3,4,5,6,7,8,9,10];
list.devices = [1,2,3,4];
答案 2 :(得分:0)
我曾经遇到过类似的问题,最后我找到了一个不错的拙劣工作来使它起作用:
var timer = null;
function setListener() {
window.document.addEventListener("visibilitychange", function(e) {
window.clearTimeout(timer);
timer = null;
window.open('','_self').close();
});
}
function redirectAndroid() {
setTimeout(function () { window.location = "https://itunes.apple.com/appdir"; }, 25);
window.location = "appname://";
}
function redirecIOS() {
setListener();
var beforeApp = new Date().valueOf();
window.location.href = "appname://";
var afterApp = new Date().valueOf();
if (afterApp - beforeApp < 100) {
setTimeout(function() {
"https://itunes.apple.com/appdir";
}, 25);
} else {
if (timer === null) {
timer = setTimeout(function() {
"https://itunes.apple.com/appdir";
}, 200);
}
}
这样,重定向到应用程序后,如果打开它,则会在超时功能之前触发“ visibilitychange”事件,并且您清除超时以避免将其重定向到Web,然后关闭浏览器(如果需要)。如果未安装应用程序,则timeAfterApp-timeBeforeApp不是<100,因此您可以在其中设置超时。