iOS PWA 独立:如何在新的 window 中强制打开

iOS PWA standalone: how to force opening in a new window

我在主屏幕上保存了一个 PWA,它以标准方式打开,没有搜索栏,也没有底部按钮(共享、标签等)。

所以每个 link 都会在 PWA 中打开,这是预期的。

我在显示 pdf 时遇到问题,因为它们通常在 Safari 中打开时带有“共享”按钮和所有底部栏,但在 PWA 中它们打开时没有底部栏也没有任何共享按钮。

所以我的想法是在新的 safari window,.

中打开 PDF link (http://www.mywebsite.com/download/pdf/12345)

我尝试将 target="_blank" 放在 PDF link 上,但这并没有解决问题。

我还尝试通过使用 safari://http://www.mywebsite.com/download/pdf/12345 在 safari 中打开应用程序来强制执行 iOS 行为,但没有成功。

如何打开新的 Safari window 到 link?

你可以尝试使用window.open(url).

但是,记得放在有onclick事件属性的元素中。

例如,

<button class='btn' onclick='window.open("https://www.google.com", "_blank");'>Open Google search</button>

参考:window.open(url, '_blank'); not working on iMac/Safari

编辑

您可以在 manifest.json 中设置一个 scope 来自定义打开外部文件的位置 link。

您可以在 属性 范围内参考 https://developers.google.com/web/fundamentals/web-app-manifest

好的,唯一可行的解​​决方案是告诉 iOS 您将进入另一个域。

仅当您位于同一域中时,PWA 才会保留在您的应用程序框架中。 要在域内以外部 window(或在 PWA 内但使用 Safari 标准控件)打开 link,您必须将其发送到 external/different 域。

所以 PWA 在 https://www.mywebsite.com/ 上并且你想打开一个带有所有 Safari 控制按钮的 PDF,你只需创建一个 SUB 域并将 link 指向它,比如 https://media.mywebsite.com/download/pdf/12345 此时 PWA 认为您在不同的域中并进行正确的渲染!