2012-05-12 2 views
2

Я новичок в PhoneGap/CoffeeScript, пытаясь получить приложение Hello World, работающее в iOS, и задаюсь вопросом, что я делаю неправильно.PhoneGap CoffeeScript Hello World

Это будет мой стандартный 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.js генерируется из app.coffee выглядит следующим образом:

(function() { 
    var onBodyLoad, onDeviceReady; 

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

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

}).call(this); 

Когда я удалить первую строку "(function() { "и последняя строка" }). call (this); "app.js получить предупреждение, и все работает правильно. Но я думаю, что есть лучший способ, чем удалять эти строки каждый раз, когда CoffeeScript компилируется в JavaScript.

большое спасибо, Jakob

ответ

3

CoffeeScript оборачивает каждый файл в функцию, чтобы предотвратить его от загрязнения глобального пространства имен. Если вы действительно хотите сделать это таким образом, вы можете изменить объявление onBodyLoad на window.onBodyLoad, но лучшие практики явно запрещают размещение вызовов Javascript в HTML-элементах, таких как onload.

Это вариант на popular question. Here - пример того, как вы можете использовать прослушиватель событий, чтобы ненавязчиво вызвать вашу функцию при загрузке страницы.

+0

Большое спасибо за быструю помощь, я думал, что окно будет что-то еще в PhoneGap/Webview. –

1

CoffeeScript предлагает опцию bare-b, которая отключает упаковку.