2

PhoneGap /CoffeeScriptがiOSでHelloWorldアプリを実行しようとしているのは初めてで、何が間違っているのか疑問に思います。

これは私の標準のindex.htmlになります:

<!DOCTYPE html>
<html>
  <head>
  <title></title>

    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no;" />
  <meta charset="utf-8">


  <script type="text/javascript" charset="utf-8" src="cordova-1.6.0.js"></script>
  <script type="text/javascript" charset="utf-8" src="app.js"></script>

  </head>
  <body onload="onBodyLoad()">
  <h1>Hey, it's Cordova!</h1>
  <p>Don't know how to get started? Check out our <em><a target="_blank" href="http://docs.phonegap.com/en/edge/guide_getting-started_ios_index.md.html#Getting%20Started%20with%20iOS">Getting Started Guide</a></em>

  </body>
</html>

そして、app.coffeeから生成されたapp.jsは次のようになります。

(function() {
    var onBodyLoad, onDeviceReady;

    onBodyLoad = function() {
        return document.addEventListener("deviceready", onDeviceReady, false);
    };

    onDeviceReady = function() {
        return navigator.notification.alert("This alert never happens!");
    };

}).call(this);

app.jsの最初の行" (function(){ "と最後の行 " })。call(this); "を削除すると、アラートが表示され、すべてが正常に機能しています。しかし、CoffeeScriptがJavaScriptにコンパイルされるたびにこの行を削除するよりも良い方法があると思います。

どうもありがとう、ヤコブ

4

2 に答える 2

3

Coffeescriptは、各ファイルを関数でラップして、グローバル名前空間を汚染しないようにします。本当にこの方法で実行したい場合は、の宣言onBodyLoadをに変更できますがwindow.onBodyLoad、ベストプラクティスでは、のようなHTML要素にJavascript呼び出しを配置することに明示的に反対していますonload

これは人気のある質問のバリエーションです。これは、イベントリスナーを使用して、ページの読み込み時に目立たないように関数を呼び出す方法の例です

于 2012-05-12T22:02:32.780 に答える
1

CoffeeScriptには、ラッピングを無効にするbareオプションがあります。-b

于 2013-01-16T17:03:30.193 に答える