【问题标题】:('serviceWorker' in navigator) not returning 'true' when read from file, true otherwise(导航器中的'serviceWorker')从文件读取时不返回'true',否则返回true
【发布时间】:2016-04-17 09:53:37
【问题描述】:

我已经成功构建了一个 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) 总是返回 false 并且 Service Worker 注册脚本不运行。如果我删除条件,一切正常。如果我直接在 Chrome 的控制台中输入条件,它会返回 true

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

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

【问题讨论】:

    标签: ruby-on-rails google-chrome coffeescript service-worker


    【解决方案1】:

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

    if 'serviceWorker' of navigator
    

    【讨论】:

    • CoffeeScript 的 of 用于查看对象属性(即 JavaScript 的 in),CoffeeScript 的 in 用于查看数组。您将看到循环中使用的相同术语:for e in arrayfor k, v of objectin 的“遍历数组内容”版本可能是 CoffeeScript 中 in 运算符的原始版本。
    • 还有if 'serviceWorker' not of navigator 用于逆向
    猜你喜欢
    • 2012-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-05
    • 1970-01-01
    • 2013-04-22
    • 1970-01-01
    • 2023-02-16
    相关资源
    最近更新 更多