iOS 11 - 独立网络应用程序 link 打开默认设置已取消? (处理 Web 应用程序中的 PDF 显示。)

iOS 11 - standalone web app link opening default reversed? (Handling PDF display in web app.)

有很多关于防止独立网络应用程序中的 link 在移动版 Safari 中打开的流量,但引用的 iOS 版本要早得多(7-9?)。在 iOS 11 中,我遇到了相反的问题:在我的独立网络应用程序中,我有 link 需要显示的 PDF 文件。当我点击它们时,无论我提供什么选项,它们都会在网络应用程序浏览器中打开,而不是在 Safari 中打开。由于独立模式,结果是 Web 应用程序进入死胡同,需要重新启动应用程序。 (Android 似乎做了正确的事情并转而使用 pdf 查看应用程序。)

点击处理程序(javascript/bootstrap/jquery):

function openDocument(docURL) {
    window.open(docURL,'_blank');
    return false;
}

或者,是否可以为新页面打开网络应用程序内部的导航,这样我就可以避免死胡同? (根据我正在阅读的内容,我认为没有;我已经尝试了一些 window.open 的选项但无济于事。)或者是否有可能以某种方式将(多页)pdf 查看器和 UI 放在一起解雇要素?欢迎提出建议。

编辑:总结下面的讨论,iOS 在独立网络应用程序中处理内部和外部 link 的方式不同。通过在服务器端重新映射使 link 看起来是外部的允许 link 强制 Safari 打开。

H在您的页面中使用 iFrame 或 DIV 并在该组件中加载 PDF。在 iFrame 顶部有一个后退按钮以避免死胡同。

<iframe src="https://example.com/mypdf.pdf"
   width="match your parent element" height="match your parent element" >

您可以在此处看到 embed PDF 的另一种选择。

更新:如果您从不同的域或子域打开 PDF,它将在单独的 window 甚至 iOS 中打开。假设你的 PWA URL 是 https://www.example.com/myapp and if you are currently accessing pdf from "https://www.example.com/myapp/pdf/mypdf.pdf", set an alias for this URL like "https://www.pdf.example.com/myapp/mypdf.pdf”。

如果域或子域在 PWA 中发生变化,它将被视为外部 link 并且将始终在新的 window 中打开,而不是在导致死亡的应用程序内部结尾。如果 CSS 技巧不够好,您可以试试这个。