完全防止 iOS Web 应用在移动 Safari 中打开链接,即使链接包含参数

Posted

技术标签:

【中文标题】完全防止 iOS Web 应用在移动 Safari 中打开链接,即使链接包含参数【英文标题】:Completely prevent iOS web app from opening link in mobile Safari, even with links containing parameters 【发布时间】:2014-12-17 16:14:56 【问题描述】:

我找到了多种解决方案来阻止 ios 网络应用在移动 Safari 中打开正常链接,不幸的是它们不适用于包含参数的链接,例如

href="index.php?s=example"

这些仍然在移动 Safari 中打开。

到目前为止我发现的正常链接的最短解决方案可以找到here at ***。也许有人可以修改那个脚本?

【问题讨论】:

Webapp for iphone switches from home screen to Safari when url parameters are used的可能重复 【参考方案1】:

试试 4 岁的 github gist。我使用它并且它有效。 您可以通过bower使用它:

凉亭安装 --save iosweblinks

可能是您在页面上有 javascript 错误并且处理程序没有调用?

附:我修改后的脚本,用于防止在standalone 模式下在 Safari 中打开链接:

(function (standalone) 

    if (!standalone) 
        return;
    

    document.addEventListener('click', function (e) 
        var element = e.target,
            href = '';

        while (!/^(a|html)$/i.test(element.nodeName)) 
            element = element.parentNode;
        

        if (element.getAttribute) 
            href = element.getAttribute('href');

            if ('' !== href && '#' !== href && null !== href && (!element.protocol || element.protocol !== 'tel:')) 
                e.preventDefault();
                window.location = element.href;
            
        
    , false);

(window.navigator.standalone));

【讨论】:

以上是关于完全防止 iOS Web 应用在移动 Safari 中打开链接,即使链接包含参数的主要内容,如果未能解决你的问题,请参考以下文章

防止 iOS 移动 Safari 闲置/自动锁定/休眠?

MobileSafari(iOS Safari):有没有办法防止水平/垂直滚动“捕捉”?

如何防止在 Safari 移动浏览器上捏缩放(滚动)?

什么控制从 Web Clip 启动的 iOS Web 应用程序是不是在移动 Safari 中打开链接?

在 iOS 移动 Safari 13(iPhone X 和 11)中隐藏全屏 Web 应用程序的状态/位置栏

移动 safari 和 iOS 11:导航栏重叠的 Web 应用程序和全高 (100vh)