我是PhoneGap / CoffeeScript的新手,试图在iOS上运行一个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.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);
当我删除第一行“(function(){”和最后一行“})。调用(此); ”的app.js获取警报和一切正常。 但我想每次CoffeeScript编译成JavaScript时都有比删除这些行更好的方法。
非常感谢你, 雅各布答案 0 :(得分:3)
Coffeescript将每个文件包装在一个函数中,以防止它污染全局命名空间。如果确实希望以这种方式执行此操作,则可以将onBodyLoad
的声明更改为window.onBodyLoad
,但最佳做法明确反对将Javascript调用放在HTML {{1}等HTML元素中}}
这是popular question的变体。 Here是一个示例,说明如何使用事件侦听器在页面加载时不引人注意地调用函数。
答案 1 :(得分:1)
CoffeeScript提供bare
选项-b
,禁用包装。