【问题标题】:Determine an installed app using Safari on iPhone在 iPhone 上使用 Safari 确定已安装的应用程序
【发布时间】:2012-08-14 12:22:31
【问题描述】:

我想在 iPhone Safari 上使用自定义 URL 方案确定已安装的应用程序。

您可能认为这是不可能的,但 JavaScript 帮助我解决了这个问题。

  <script>(function(){

var fallbackLink = '<?=$info['failed_url']?>'+window.location.search+window.location.hash;

var isiOS = navigator.userAgent.match('iPad') || navigator.userAgent.match('iPhone'),
    isAndroid = navigator.userAgent.match('Android');

if (isiOS || isAndroid) {
  document.getElementById('loader').src = '<?=$info['scheme']?>://'+window.location.search+window.location.hash;

  fallbackLink = isAndroid ? '<?=$info['failed_url']?>' :
                             '<?=$info['failed_url']?>' ;
}
window.setTimeout(function (){ window.location.replace(fallbackLink); }, 1000);

})();</script>

这是我的脚本。

我已经知道 iPhone 应用程序的自定义 URL 方案。如果它存在于 iPhone 上,它会成功启动应用程序。但是,如果 iPhone 没有该应用程序,它会重定向到不同的页面。

我在失败的网页上放置了某些代码,以通知用户没有应用程序。在我找到这个之前,我的计划是完美的。

即使应用程序在超时后在 iPhone 上启动,JavaScript 重定向仍然有效。

如果 iPhone 启动应用程序,有没有办法停止 JavaScript?

谢谢。

【问题讨论】:

    标签: javascript iphone safari


    【解决方案1】:

    当窗口失去焦点时,您总是可以取消超时。

    var countdown = window.setTimeout(function (){
        window.location.replace(fallbackLink);
    }, 1000);
    
    window.addEventListener("blur", function (){
        window.clearTimeout(countdown);
    }, false);
    

    【讨论】:

    • 它不会暂停超时。
    • 顺便有函数拼写错误
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-21
    • 2011-06-04
    • 2012-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多