【问题标题】:Phonegap 3.3.0 inappbrowser' s events are not firingPhonegap 3.3.0 inappbrowser 的事件未触发
【发布时间】:2014-02-05 06:01:47
【问题描述】:
我使用 phonegap 开发应用程序。这个应用程序适用于一些 api,所以我必须使用 inappbrowser 插件。但是在 phonegap 2.9.x 版本之后,插件的事件没有触发。这个问题大家可以看这个论坛https://groups.google.com/forum/#!topic/phonegap/e5_5unC2fYs
。 Apache 有一个关于它的公告。announcement 但这不是一个解决方案。因为,当我尝试将 phonegap 与 dreamweaver 一起使用时,我可以在 Dreamweaver Build 服务中选择 phonegap 2.9 版本,并且 Inappbrowser 事件在 Android 4.x 设备上工作。所以,问题不在于Android版本。问题在于Phonegap版本。对于一些 sdks(admob,...) 我必须使用 eclipse。而且我无法使用命令行创建 Phonegap 2.9 版本的应用程序。您在创建应用程序时对选择版本有任何想法吗?或更改降级phonegap版本。
谢谢你的回答。
【问题讨论】:
标签:
android
cordova
phonegap-plugins
inappbrowser
【解决方案1】:
我自己没有测试过,但是如果你使用 phonegap 构建,你可以尝试包含这种格式的插件:
<gap:plugin name="org.apache.cordova.inappbrowser" />
,以及记录在案的:
<feature name="InAppBrowser">
<param name="android-package" value="org.apache.cordova.inappbrowser.InAppBrowser" />
</feature>
<feature name="InAppBrowser">
<param name="ios-package" value="CDVInAppBrowser" />
</feature>
插件详情见page
我在从 2.9.0 升级到 3.3.0 时遇到了一些问题,结果我以这种格式包含了我的插件:
<plugin name="InAppBrowser" value="org.apache.cordova.InAppBrowser" />
,由于某种原因不起作用,当我使用这种格式时,我的插件又开始工作了。
希望这会有所帮助。
【解决方案2】:
事实证明,我的问题不是事件没有触发,而是我的回调代码中存在错误(ReferenceError)。由于此回调是 InAppBrowser 收到“loadstart”事件时运行的第一个回调,因此所有未来的回调都没有运行,因为第一个回调引发了异常,因此看起来 InAppBrowser 根本没有触发任何回调。
我发现这一点的方法实际上是通过手动评估 weinre 中的回调。
cordova.require('cordova/exec').nativeCallback('InAppBrowser115751764',1,
{
"url" : "http:\/\/example.com\/path",
"type" : "loadstart"
}
,1)
我通过查看verbose PhoneGap exec logs 获得了上述 sn-p。您还应该能够通过检查 cordova.callbacks 对象找到回调 ID。
【解决方案3】:
尝试安装cordova:
sudo npm install -g cordova
在应用浏览器中安装插件:
cordova plugin add org.apache.cordova.inappbrowser
现在运行:
phonegap run android