2

我正在尝试将 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 很难保证订单)

4

1 回答 1

4

<link rel="manifest">不,您页面中的相对位置<head>不会影响它的解析和解释方式。

我很难解释您所看到的行为,除了可能包含您的 JavaScript 和 CSS 的 HTML 中的语法错误,导致后续<link rel="manifest">解析不正确。但总的来说,职位应该无关紧要。

于 2018-08-15T14:51:28.673 回答