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

标签 javascript iphone safari

我想在 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?

谢谢。

最佳答案

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

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

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

关于javascript - 使用 iPhone 上的 Safari 确定已安装的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11952202/

相关文章:

javascript - javascript混淆中的 promise

iphone - 使用 CGDataProviderCreateWithData 回调

安卓和 iOS : Best way to create multiple similar apps

html - Safari 7 中搜索取消按钮的位置

javascript - OOP ajax 避免代码重复

javascript - JQuery 选择 : two attribute's value not equaling each other

javascript - 从文件 ://to http://执行 XMLHttpRequest 时出现问题

ios - CM MotionActivity 后台事件触发

javascript - 用于深度链接的移动 Safari 页面卸载/隐藏/模糊

javascript - Safari DP导入ES2015模块需要文件扩展名