(导航器中的 'serviceWorker')从文件读取时不返回 'true',否则为 true

('serviceWorker' in navigator) not returning 'true' when read from file, true otherwise

我已经成功构建了一个 Service Worker 来控制我的 Rails 应用程序中的几个页面(并不容易)。我已经测试过了,在 Google Chrome 的最新版本中一切正常。但是,如果我尝试像这样向 Service Worker 注册脚本添加条件:

if ('serviceWorker' in navigator) #<-- this is what I'm talking about
  #registration stuff
else
  #Your browser does not support service workers

条件 ('serviceWorker' in navigator) 总是 returns false 而 Service Worker 注册脚本不会 运行。如果我删除条件,一切正常。如果我直接在 Chrome 的控制台中输入条件,它 returns true.

有人知道我做错了什么吗?我的理解是 if ('serviceWorker' in navigator) 是测试浏览器与 Service Workers 兼容性的标准检查。我的 Rails 应用程序在开发模式下在其自己的文件中提供注册脚本(同样,如果我删除条件一切正常)。

非常感谢任何想法/探索途径!

我发现了问题:我使用的是 coffeescript 而不是 javascript(Rails 中的标准)。显然,coffeescript 中的 in 与 javascript 中的 in 非常不同。在 coffeescript 中,正确的行是:

if 'serviceWorker' of navigator