javascript - ios PWA 如何在移动默认 safari 上打开外部链接(不在应用浏览器中)

标签 javascript html css ios progressive-web-apps

我正在 IOS 13.2 中制作 PWA。
我需要通过单击外部链接从我的应用程序启动另一个 PWA。
问题是我当前的 PWA 在应用内浏览器中打开所有外部链接,而不是在常规 safari 中打开,并且在应用内浏览器中没有添加到主屏幕选项。
如何强制 PWA 在常规 safari 而不是应用内 safari 中打开外部链接?
不起作用的东西

  • 更改 list 文件中的范围
  • 使用 rel="noreferrer"
  • 使用 target="_blank"
  • 最佳答案

    回答这个问题(以及所有评论)有点困难,因为用例不是很清楚,但是这里......
    在移动设备上,“应用内浏览器”与在全屏模式下运行的渐进式 Web 应用不同。
    如果一个 iOS 应用程序运行然后在其中显示 HTML 内容,它正在使用 UIWebViewWKWebView .但是,对于 PWA,它已经在 Safari 中作为“全屏”体验运行。 定义您要从中断开链接非常重要,因为它们的功能不同。 target="_blank"通常会使用 WebView 将链接从页面中断开。我相信这也是当前域外链接的默认功能。
    “已安装”的 PWA 以“独立”模式运行。这使它成为全屏并删除导航栏等。在撰写本文时,Safari 不支持 fullscreen API其他浏览器正在实现。 Chrome 使用应用 list 文件来确定此功能。 Safari 基本上忽略了 list ,而支持专有的元标记。
    在这种情况下 <meta name="apple-mobile-web-app-capable" content="yes">告诉 Apple 使该页面成为一个独立的应用程序。尝试设置content="no" (Safari 会大量缓存内容,因此您可能需要强制刷新)在应该脱离独立模式的页面上。您可以使用此 javascript boolean window.navigator.standalone 来检查页面认为它处于何种模式。 .
    或者您可以使用 javascript 在 Safari 中强制打开“新窗口”,只要 您的目标是不同的子域或 HTTP 而不是 HTTPS .

    // if app is hosted from https://example.com
    if (("standalone" in window.navigator) || window.navigator.standalone ) {
        window.open('http://example.com/page', '_blank');
    }
    
    最后,Apple 使用了一些 special URL strings使 native 应用程序处理一些操作,例如电子邮件、电话号码和 youtube 视频。您可能能够“破解”该功能以让 Safari 浏览器打开您的链接。

    关于javascript - ios PWA 如何在移动默认 safari 上打开外部链接(不在应用浏览器中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60267796/

    相关文章:

    javascript - 如何在 javascript 中隐藏损坏的图像?

    html - div之间的样式划分

    jquery - 查找使用 jQuery "toggle"函数后元素的 css 发生了怎样的变化

    javascript - 如果 @Input 是一个对象及其属性更新之一,则 OnChanges 不会触发

    javascript - AngularJS 不允许我加载另一个页面

    javascript - typescript 中的字符串枚举

    html - 如何在 bootstrap 4 下拉菜单中应用网格系统使其像附加图像一样成形?

    html - 号码输入。 HTML

    jquery - <img> 覆盖分配的空间

    html - 使用百分比和像素计算时出现 Sass 错误