我正在尝试将 PWA 功能添加到一个简单的站点,但我遇到了 Chrome 版本 68.0.3440.106 的奇怪问题。
我在http://localhost:4502上运行我的测试,在 CMS 的上下文中(所以我在一些限制内工作)。另外,请注意,我删除了所有 PWA/Service Worker 代码,因此没有缓存在起作用。
在<head>
..我通过以下方式包含清单:
<link rel="manifest" href="/content/foo/bar.pwa.manifest.webmanifest" type="application/manifest+json">
(清单文件的“奇数”名称是我正在使用的 CMS 的约束;我还使用了“json”扩展名来达到与下文所述相同的效果)。
其中包含...
{"name":"Sample",
"short_name":"sample",
"theme_color":"#001F3F",
"background_color":"#FF4136",
"display":"standalone",
"scope":".",
"start_url":"/content/foo/bar.html",
"icons":[{"src":"/content/assets/sample.jpg","size":"192x192","type":"image/jpeg"},{"src":"/content/assets/sample.jpg","size":"512x512","type":"image/jpeg"},{"src":"/content/assets/sample.jpg","size":"144x144","type":"image/jpeg"}]}
我观察到以下情况:当我的 JS/CSS 包含 ABOVE 时,我的<link rel="manifest" ..
事情就乱套了。* 如果我复制页面的 URL,将其粘贴到新的 chrome 选项卡中(刷新现有选项卡不会剪切它),然后为该新选项卡打开 Chrome 开发工具,我可以看到清单的 HTTP 请求/响应,并且在 Dev Tools > Application > Manifest 中似乎可以正确显示所有内容。(到目前为止,一切都很好)。* 如果我然后刷新此选项卡,我看不到清单的请求,并且应用程序 > 清单部分是空白的。HTML 源代码根本没有改变。* 无论我刷新多少次它似乎都没有帮助(也清除缓存等)
2)当我将其移动<link rel="manifest"
到任何 CSS/JS 之上时,<head>
它似乎可以一致且正确地加载。刷新显示清单的 HTTP 请求的页面,应用程序 > 清单显示正确的信息。
我一直在搜索文档(谷歌,MDN)以查看清单是否必须在任何其他包含之前包含,但我找不到任何说明 - 奇怪的是,在第一次加载选项卡时,它似乎即使在 CSS/JS 之后包含也可以工作。
我希望有一种方法可以加载它,无论发生在哪里<head>
(<link rel="manifest"..
因为 CMS 很难保证订单)