javascript - Coffeescript、Facebook JS API 和范围

标签 javascript facebook coffeescript

我正在使用 Coffeescript 并异步加载 Facebook JS api,正如他们在其文档中所建议的那样。像这样:

#Load the FB api asynchronously
(->
  e = document.createElement("script")
  e.async = true
  e.src = document.location.protocol + "//connect.facebook.net/en_US/all.js"
  document.getElementById("fb-root").appendChild e
)()

doSomething = () ->
  # I'd like to call this from the FB context 

window.fbAsyncInit = ->
  FB.init 
    appId: fb_app_id
    status: true
    cookie: true
    xfbml: true
    oauth: true

  # Doesn't work. Is out of scope. 
  doSomething() 

随着 Facebook 内容附加到 window,我无法访问 Coffeescript 的匿名包装函数上下文中的内容。

我知道我可以将我的函数定义为 window.doSomething(),但我不确定这是否是最好的方法。

有没有办法在 Coffeescript 的匿名包装函数的上下文中加载 Facebook 内容?

最佳答案

您认为不应污染全局 namespace 的想法是对的。继续拥有干净环境的一种方法(了解它 :) 是使用一个类并在其中保留您的 Facebook 特定功能。

这可能有助于您入门:

class MyFacebookApp 
  constructor: ->
  doSomething: () ->
    console.log "I'm doing something over here."

window.myFacebookApp = new MyFacebookApp()
window.fbAsyncInit = ->
  FB.init 
    appId: fb_app_id
    status: true
    cookie: true
    xfbml: true
    oauth: true

  myFacebookApp.doSomething()

祝你好运!

关于javascript - Coffeescript、Facebook JS API 和范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8390640/

相关文章:

javascript - CoffeeScript:如何对字符串进行切片并仅获取最后 2 个字符

javascript - 在 coffeescript 中调用命名函数的正确方法是什么?

javascript - 如何使 JS 和 CSS 内联用于 eBay 模板?

javascript - Jquery 滚动倾斜

android - 为 Android 传递访问 token facebook 3

ios - 检查 Facebook 帐户是否链接到 PFUser

javascript - 以编程方式更改 data-href 属性后重新加载 Facebook Like 小部件

javascript - 一次单击一次显示句子中的大字符串

javascript - 几个跨度共享相同的边框和框阴影

javascript - 我们如何检查 jQuery UI 对话框中哪个按钮被单击?