首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当尝试打开未安装的本机应用程序时,如何防止iOS safari警报?

当尝试打开未安装的本机应用程序时,如何防止iOS safari警报?
EN

Stack Overflow用户
提问于 2013-10-31 16:37:34
回答 6查看 32K关注 0票数 43

我一直在寻找一种从浏览器打开原生iOS应用程序的方法。我在这里找到了一个不错的解决方案:Is it possible to register a http+domain-based URL Scheme for iPhone apps, like YouTube and Maps?

当你安装了应用程序时,这个解决方案效果很好。但是当用户没有安装此应用程序时,safari会触发一条错误消息,提示"Safari无法打开页面,因为地址无效。“

有没有办法防止这种行为,而不是提示用户下载应用程序?

EN

回答 6

Stack Overflow用户

发布于 2014-07-31 17:04:26

这是一个适合我的解决方案:

代码语言:javascript
复制
var timeout;

function preventPopup() {
    clearTimeout(timeout);
    timeout = null;
    window.removeEventListener('pagehide', preventPopup);
}

function openApp() {    
    $('<iframe />')
    .attr('src', appurl)
    .attr('style', 'display:none;')
    .appendTo('body');

    timeout = setTimeout(function() {
            document.location = appstore;
    }, 500);
    window.addEventListener('pagehide', preventPopup);
} 
票数 27
EN

Stack Overflow用户

发布于 2014-07-11 12:22:40

使用iframe。

代码语言:javascript
复制
$('<iframe />').attr('src', "appname://").attr('style', 'display:none;').appendTo('body');
票数 5
EN

Stack Overflow用户

发布于 2015-06-03 19:32:44

为了解决这个问题并避免不想要的iOS safari警告,我使用了一种不同的方法来处理,也是一个iframe,但没有jquery和侦听器事件。它工作得很完美。

代码语言:javascript
复制
    var iframe = document.createElement("iframe");

    iframe.style.border = "none";
    iframe.style.width = "1px";
    iframe.style.height = "1px";
    iframe.onload = function () {
        document.location = alt;
    };
    iframe.src = nativeSchemaUrl; //iOS app schema url

    window.onload = function(){
        document.body.appendChild(iframe);
    }

    setTimeout(function(){
        window.location = fallbackUrl; //fallback url
    },300);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19701708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档