Ruby on rails (“导航器”中的“serviceWorker”)从文件读取时不返回“true”,否则返回“true”

Ruby on rails (“导航器”中的“serviceWorker”)从文件读取时不返回“true”,否则返回“true”,ruby-on-rails,google-chrome,coffeescript,service-worker,Ruby On Rails,Google Chrome,Coffeescript,Service Worker,我已经成功地构建了一个服务人员来控制Rails应用程序中的几个页面,这并不容易。我已经在最新版本的谷歌Chrome上进行了测试,一切正常。但是,如果我尝试向Service Worker注册脚本添加一个条件,如下所示: if ('serviceWorker' in navigator) #<-- this is what I'm talking about #registration stuff else #Your browser does not support service

我已经成功地构建了一个服务人员来控制Rails应用程序中的几个页面,这并不容易。我已经在最新版本的谷歌Chrome上进行了测试,一切正常。但是,如果我尝试向Service Worker注册脚本添加一个条件,如下所示:

if ('serviceWorker' in navigator) #<-- this is what I'm talking about
  #registration stuff
else
  #Your browser does not support service workers
navigator中的条件“serviceWorker”始终返回false,并且Service Worker注册脚本不会运行。如果我删除条件,一切都会正常。如果我直接在Chrome的控制台中输入条件,它将返回true

有人知道我做错了什么吗?我的理解是,如果navigator中的“serviceWorker”是测试浏览器与ServiceWorkers兼容性的标准检查。在开发模式下,我的Rails应用程序将注册脚本保存在它自己的文件中,如果我删除了条件,一切正常


非常感谢您提供任何可供探索的想法/途径

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

if 'serviceWorker' of navigator
CoffeeScript的of用于查看对象属性,即JavaScript的in,CoffeeScript的in用于查看数组。您将看到循环中使用的相同术语:数组中的e与对象的k,v。数组内容版本in上的循环可能是CoffeeScript中in运算符的原始版本。