我需要实现一个 javascript,我可以在其中检测我的深层链接是否有效,如果它有效,那么它应该保持不变,但如果它不起作用,那么它必须开始下载文件。 为此,我使用超时功能来做到这一点。这是我使用的示例代码。
setTimeout(function () { window.location = "https://itunes.apple.com/appdir"; }, 25);
window.location = "appname://";
但这段代码在 android 和 ios 上运行良好,但在桌面浏览器上却产生了问题。在Deeplink正常运行后的桌面浏览器中,超时功能不会停止并重定向到下载页面。
所以最后我想要一些可以检测我的 Deeplink 是否有效的事件,这样我就可以设置 cleartimeout 函数来防止重定向到下载 URL
最佳答案
我一直面临类似的问题,最后我找到了一个很好的拙劣工作来让它工作:
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,因此您可以在此处设置超时。
关于javascript - 如果 Deeplink url 不起作用,请将用户发送到下载页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48587860/