-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 に答える