我安装了最新的Ripple Emulator(Chrome Store中最新版本),一切正常,除了活动。它们都没有发射(不仅deviceready
和其他SO问题一样,没有。)
既不手动(使用Events
窗格)也不自动(deviceready
)。
当我使用手动方法时,Ripple会向控制台写一条线,它正在触发一个事件,但实际上并没有发生任何事情。我的申请根本没有反应。我有backbutton
事件绑定,它在Ripple中不起作用。当我将其init部分移动到deviceready
事件时,应用程序停止工作,因为它没有被触发。当然,在目标设备上一切都很好,所以代码应该是正确的。
可能导致此类行为的原因是什么?有什么解决方法吗?
编辑:我在Windows 7上安装了Ripple Emulator (Beta) 0.9.15
作为Chrome扩展程序。目标设备上的所有功能都很好,因此JS代码(事件处理程序)应该没问题。
答案 0 :(得分:3)
经过深入调查后,我设法解决了这个问题(至少部分是这样 - 有些事件被解雇了,有些事件没有被解雇)。就我而言,它是一个缺少.js
(PhoneGap源)文件的问题。
成功的关键是:
实际上将PhoneGap / Cordova JS 文件放在您的应用内容中,并在源文件中正确引用(有效路径和文件名)。< / p>
在撰写本文时,将源文件包含在正确版本(2.0.0)中。
第一次可能会特别令人困惑。源文件(<script type="text/javascript" src="cordova.js"></script>
)中的引用应该不受影响,但它引用的文件不应该退出。 PhoneGap Build将在编译/构建过程中注入此文件(在适当的版本中)。
这适用于PhoneGap,但完全错误的Ripple 。如果您希望Ripple功能齐全且能够触发事件(至少是确定的话),您应该保留该文件。我发现,这根本不会干扰PhoneGap。无论是否存在该文件,都可以毫无问题地构建应用程序。
第二也很重要。我发现,当前版本的Ripple是基于PhoneGap API 2.0.0构建的,这对于当前可用的PhoneGap API 3.0.0非常非常老。因此,要让Ripple几乎没有故障,你必须[浏览PhoneGap存储库(http://phonegap.com/install/)并获取 PhoneGap 2.0.0 源,发布 2012年7月20日并从中提取cordova.js
个文件。然后将其放在webapp的源文件夹中,添加正确的引用并尝试Ripple。
现在至少应该触发一些事件(有些事件,如deviceready
)可能仍会失败。
另外,请记住,everything, including event handlers, must be defined in a deviceready
event listener code或整个事情都会失败。
Ripple的JIRA问题,可能与此有关:
phonegap.js
/ cordova.js
files really exists。BTW:如果你打开浏览器的控制台并手动触发一个事件,你会看到Ripple写入控制台的正确通知。这意味着,Ripple 认为,如果在模拟的webapp上触发偶数,但它实际上不会触发它。