在iPhone上使用Safari确定已安装的应用程序

时间:2012-08-14 12:22:32

标签: javascript iphone safari

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

您可能认为这是不可能的,但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?

谢谢。

1 个答案:

答案 0 :(得分:1)

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

var countdown = window.setTimeout(function (){
    window.location.replace(fallbackLink);
}, 1000);

window.addEventListener("blur", function (){
    window.clearTimeout(countdown);
}, false);