iOS 11 - 独立的Web应用程序链接打开默认是否反转?(在Web应用程序中处理PDF显示.)

Eri*_*cFL 6 javascript ios iphone-standalone-web-app progressive-web-apps

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

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

function openDocument(docURL) {
    window.open(docURL,'_blank');
    return false;
}
Run Code Online (Sandbox Code Playgroud)

或者,可以为新页面打开Web应用程序内的导航,以便我可以避免死路一条吗?(我认为没有,因为我正在阅读;我已经尝试了一些选项来开窗.打开无济于事.)或者是否有可能以某种方式组合一个(多页)pdf查看器和一个用于解雇的UI元素?建议欢迎.

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

Ana*_*and 3

H在页面中有一个 iFrame 或 DIV,然后在该组件内加载 PDF。iFrame 顶部有一个后退按钮以避免死胡同。

<iframe src="https://example.com/mypdf.pdf"
   width="match your parent element" height="match your parent element" >
Run Code Online (Sandbox Code Playgroud)

您可以在此处看到另一种嵌入PDF 的选项。

更新:如果您从不同的域或子域打开 PDF,即使在 iOS 中,它也会在单独的窗口中打开。假设您的 PWA URL 是https://www.example.com/myapp ,如果您当前正在从“ https://www.example.com/myapp/pdf/mypdf.pdf ”访问 pdf ,请为此 URL 设置别名就像“ https://www.pdf.example.com/myapp/mypdf.pdf ”。

如果 PWA 中的域或子域发生更改,它将被视为外部链接,并且始终会在新窗口中打开,而不是在导致死胡同的应用程序内部打开。如果 CSS hack 还不够好,你可以尝试这个。