-2

很高兴在某些 Rails 应用程序中开始使用 coffescript。但是,经过一些项目,有些困难。

下面的代码翻译得很好,但是咖啡没有做任何事情

JS:

(function(){
  var wf = document.createElement('script');
  wf.src = "/assets/libraries/webfonts.js";
  wf.type = 'text/javascript';
  wf.async = 'true';
  var s = document.getElementsByTagName('script')[0];
  s.parentNode.insertBefore(wf, s);
})();
WebFontConfig = {
  custom:{
    families: ['tb', 'tr'],
    urls: [ '/assets/1.fonts.css' ]
  }
}

咖啡 :

(->
  wf = document.createElement("script")
  wf.src = "/assets/libraries/webfonts.js"
  wf.type = "text/javascript"
  wf.async = "true"
  s = document.getElementsByTagName("script")[0]
  s.parentNode.insertBefore wf, s
)()
WebFontConfig = custom:
  families: ["tb", "tr"]
  urls: ["/assets/1.fonts.css"]

我可以列出其他示例,但我经常面对这个“js 有效/咖啡无效”问题

4

1 回答 1

4

您的 Coffee 代码将转换为这样的 javascript:

(function(){
  var WebFontConfig;

  (function() {
    var s, wf;
    wf = document.createElement("script");
    wf.src = "/assets/libraries/webfonts.js";
    wf.type = "text/javascript";
    wf.async = "true";
    s = document.getElementsByTagName("script")[0];
    return s.parentNode.insertBefore(wf, s);
  })();

  WebFontConfig = {
    custom: {
      families: ["tb", "tr"],
      urls: ["/assets/1.fonts.css"]
    }
  };
})

如您所见,您使用的是上下文的 WebFontConfig,而不是窗口上下文。

所以,我建议你做这样的事情:

window.WebFontConfig = custom:
  families: ["tb", "tr"]
  urls: ["/assets/1.fonts.css"]

我坚信这将解决您的问题。此外,您的 Coffee 文件已执行,它只是不符合您的预期。

希望能帮助到你。

于 2012-10-26T15:56:56.530 回答