2012-08-14 79 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

相關問題