PhoneGap Build + Cordova + ChildBrowser错误

时间:2012-04-25 03:07:09

标签: cordova sencha-touch phonegap-plugins

这是我的代码:

<script src="include/cordova.js" type="text/javascript"></script> <script src="include/sencha-touch-all.js" type="text/javascript"></script> <script type="text/javascript" charset="utf-8" src="include/childbrowser.js"></script> <link href="include/sencha-touch.css" rel="stylesheet" type="text/css" />

var childBrowser = null;
if (navigator.userAgent.match(/(iPhone|iPod|iPad|Android|BlackBerry)/)) {
   document.addEventListener("deviceready", onDeviceReady, false);
} else {
onDeviceReady();
}
function onDeviceReady(){
  console.log("PhoneGap is Ready");
  childBrowser = ChildBrowser.install();
}
function openChildBrowser(url)
{
        try {
            //both of these should work...
            var cb = new ChildBrowser();
            console.log(cb);
            cb.showWebPage('http://www.google.com');
        }
        catch (err)
        {
            alert(err);
            console.log(err);
        }
}

...

还有一些不相关的代码但是当我调用openChildBrowser()时,我收到以下错误:

Uncaught TypeError: Object #<Object> has no method 'exec' 我认为这是指在cordova对象上调用exec的childbrowser。

当我查看cordvoa对象时,我在任何地方都看不到exec函数...

有什么想法吗?

7 个答案:

答案 0 :(得分:1)

这适用于iOS还是Android? 此代码适用于两者。我发现在使用var cb = new ChildBrowser()时可能会出现错误。我认为清理ChildBrowser的方式是有序的,但我现在没有时间这样做。这种方法可行。承诺:) ps - 如果你在iOS上这样做,就有一个这样的例子。

ChildBrowser.install();
window.plugins.childBrowser.showWebPage('http://www.google.com');

答案 1 :(得分:1)

据我所知,ChildBrowser尚未与cordova完全兼容。

在任何情况下,在您尝试与ChildBrowser插件进行通信之前,听起来似乎没有完成初始化。

尝试连接weinre或其他内容并测试可以在完全初始化cordova后手动打开子浏览器。确保此代码在脚本加载顺序中的cordova之后。还要确保您使用的是最新版本的所有版本。

答案 2 :(得分:0)

如果您使用async java脚本加载a.k.a延迟加载,则可能会收到此错误。

在我的情况下;我在主html文档中使用iframe。在IFrame中,我加载并运行所有广告脚本异步。之后,我开始得到Uncaught TypeError:Object#没有方法'exec'。

我不知道如何&amp;为什么,但我想这种用法会导致网络工具包被误解。

PS:使用sencha或不使用,发生此错误。所以它与sencha-touch-all无关。

答案 3 :(得分:0)

我一直在使用iOS上的ChildBrowser和Phonegap。我注意到在deviceready事件之后“安装”时,只能使ChildBrowser正常工作。仅当您的html有效且完整时才会触发此事件。

我发现,如果你提到一个实际上并不存在的图像,那么文件名或图像的拼写就不存在了,因为设计人员还没有给出它(我的情景),设备就不会发射。因此插件无法正确安装。

在onload事件中注册deviceready事件是一种可行的方法,只要你的html很好并且没有遗漏任何东西。

希望这有助于其他人。

答案 4 :(得分:0)

将phonegap / cordova更新为1.7.0并从github获取childbrowser最新代码。 它应该工作正常。

答案 5 :(得分:0)

我最终重新开始使用Eclipse和Phonegap SDK。能够在不使用构建服务的情况下以此方式工作。

这可能对某些人有所帮助:

http://phonegap.com/start#android

https://github.com/phonegap/phonegap-plugins/tree/master/Android/ChildBrowser

答案 6 :(得分:0)

您不能将childbrowser插件用于桌面浏览器。它仅适用于设备或模拟器,因此您收到此错误。