2

我安装了最新的 Ripple Emulator(Chrome 商店提供最新的),一切正常,除了事件。它们都没有触发(不仅deviceready在其他一些堆栈溢出问题中,没有)。

既不是手动(使用Events窗格)也不是自动(deviceready)触发。

当我使用手动方法时,Ripple 会向控制台写入一行,表示它正在触发一个事件,但实际上什么也没发生。我的应用程序根本没有反应。我有backbutton事件绑定,但它在 Ripple 中不起作用。当我将其初始化部分移至deviceready事件时,应用程序完全停止工作,因为它没有被触发。当然,在目标设备上一切都很好,所以代码应该是正确的。

什么可能导致这种行为,是否有任何解决方法?

编辑:我已经Ripple Emulator (Beta) 0.9.15在 Windows 7 上安装了 Chrome 扩展程序。在目标设备上一切都很好,所以 JS 代码(事件处理程序)应该没问题。

4

1 回答 1

3

经过更深入的调查,我设法解决了这个问题(至少部分解决了——有些事件被触发了,有些则没有)。就我而言,这是缺少.js(PhoneGap 源)文件问题。

成功的关键在于:

  1. 实际上将 PhoneGap / Cordova JS文件放置在您的应用程序内容中,并在您的源文件中正确引用它(有效路径和文件名)。

  2. 在撰写本文时,源文件的版本正确(2.0.0)。

首先对于 PhoneGap Build 用户来说尤其令人困惑,他们被指示删除源文件。源文件 ( <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/ ) 并获取2012 年 7 月 20 日发布的PhoneGap 2.0.0源并从中提取文件。然后将它放在你的 webapp 的源文件夹中,添加正确的引用,然后尝试 Ripple。cordova.js

现在至少应该触发一些事件(一些,比如deviceready)可能仍然失败。

另外,请记住,包括事件处理程序在内的所有内容都必须在deviceready事件侦听器代码中定义,否则整个事情都会失败。

Ripple 的 JIRA 问题,可能与此有关:

顺便说一句:如果您打开浏览器的控制台并手动触发一个事件,您会看到 Ripple 写入控制台的正确通知。这意味着,Ripple认为,如果在模拟的 web 应用程序上触发偶数,但实际上并没有触发它

于 2013-09-19T09:23:21.563 回答