我正在尝试使用 Keen.io,我将他们的 JS 转换为咖啡,如下所示:

# Keen init
Keen = Keen or
  configure: (e) ->
    @_cf = e

  addEvent: (e, t, n, i) ->
    @_eq = @_eq or []
    @_eq.push([e, t, n, i])

  setGlobalProperties: (e) ->
    @_gp = e

  onChartsReady: (e) ->
    @_ocrq = @_ocrq or []
    @_ocrq.push(e)

(->
  e = document.createElement("script")
  e.type = "text/javascript"
  e.async = not 0
  e.src = ((if "https:" is document.location.protocol then "https://" else "http://")) + "dc8na2hxrj29i.cloudfront.net/code/keen-2.1.0-min.js"

  t = document.getElementsByTagName("script")[0]
  t.parentNode.insertBefore e, t
)()

Keen.configure myParams

Keen.addEvent "script_tag_init"

但看起来事件没有发生。是什么赋予了?

最佳答案

是的,那就是问题所在。由于 CoffeeScript 的编译方式,Keen 对象对全局范围不可见。

初始化后“导出”Keen 到窗口将起作用。

或者,您可以直接在 window 对象上初始化 Keen:

# Keen init
window.Keen =
  configure: (e) ->
    @_cf = e
  ...

注意:此方法不排除首先检查页面上是否已存在 Keen,这是一种极端情况下的性能优化,对于大多数应用程序来说不是必需的。换句话说应该没问题。

关于javascript - 将 Keen.io 与 CoffeeScript 结合使用不起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20894011/

10-13 03:44