javascript - 如果 Deeplink url 不起作用,请将用户发送到下载页面

标签 javascript jquery windows deep-linking

我需要实现一个 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/

相关文章:

javascript - D3 元素被删除,尽管我只是添加新元素

javascript - 将字符串插入到另一个字符串中的随机位置

javascript - JS 代码中的减号

python - 在 Python/C 中验证 Windows 服务器用户

c++ - 将应用程序作为 Windows 服务运行是否需要管理员权限?

javascript - 通过javascript附加样式表而不闪烁

javascript - onclick 属性不适用于 flexbox

javascript - 用户单击删除按钮时如何获取当前(添加)按钮

javascript - 如何在 mvc 4 中不使用模型进行客户端验证

windows - 是否可以在没有管理员权限的情况下在 Virtualbox 共享文件夹中使用符号链接(symbolic link)?