2012-08-14 75 views
1

我想确定在iPhone Safari上使用自定义URL方案安装的应用程序。确定在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

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

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

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

我使用了这段代码,它不会重定向到fallbackLink – Jake 2012-08-14 14:51:15

+0

它不会暂停超时。 – Jake 2012-08-14 16:34:07

+0

有错误的方式 – Jake 2012-08-14 16:35:27

相关问题