我在主屏幕上保存了一个PWA,这是标准打开的,没有搜索栏,也没有底部按钮(共享,选项卡等(。
因此,每个链接都在PWA内部打开,这是意料之中的。
显示pdf时遇到问题,因为它们通常在Safari中打开,带有"共享"按钮和所有底部栏,但是在PWA中,它们在没有底部栏和没有任何共享按钮的情况下打开。
所以我的想法是在新的野生动物园窗口中打开PDF链接(http://www.mywebsite.com/download/pdf/12345
(。
我尝试将target="_blank"
放在PDF链接上,但这并没有解决问题。
我还尝试通过在safari://http://www.mywebsite.com/download/pdf/12345
safari 中打开应用程序来强制 iOS 行为,但没有运气。
如何打开指向链接的新 Safari 窗口?
好的,唯一有效的解决方案是告诉iOS您要进入另一个域。
仅当您位于同一域中时,PWA 才会保留在您的应用框架中。 要在外部窗口中打开域内的链接(或在PWA内部,但使用Safari标准控件(,您必须将其发送到外部/其他域。
所以PWA是https://www.mywebsite.com/
的,你想打开一个包含所有Safari控制按钮的PDF,你只需创建一个子域并将链接指向它,就像https://media.mywebsite.com/download/pdf/12345
此时PWA认为你在不同的域上并做正确的渲染! 🎉
你可以尝试使用 window.open(url(。
但是,请记住将其放在具有 onclick 事件属性的元素中。
例如
<button class='btn' onclick='window.open("https://www.google.com", "_blank");'>Open Google search</button>
参考:window.open(url, '_blank'(;不适用于 iMac/Safari
编辑
您可以在 manifest.json 中设置scope
,以自定义打开外部链接的位置。
可以在属性范围上引用 https://developers.google.com/web/fundamentals/web-app-manifest。