2012-04-25 98 views
0

这里是我的代码:的PhoneGap构建+科尔多瓦+ ChildBrowser错误

<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' 我认为这是参考childbrowser调用exec cordova对象。

当我看cordvoa对象我没有看到exec功能的任何地方......

任何想法?

回答

0

如果您使用加载a.k.a惰性加载的异步Java脚本,您可能会收到此错误。

对我而言;我在主html文档中使用iframe。在IFrame中,我加载并运行所有广告脚本异步。之后,我开始获取Uncaught TypeError:Object#没有方法'exec'。

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

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

+0

有趣的想法 - 虽然我不这样做我的知识。 – sirmdawg 2012-04-26 15:02:36

1

这是用于iOS或安卓吗? 这段代码可以同时使用。我发现使用var cb = new ChildBrowser()时可能会出现错误。我认为清理ChildBrowser被调用的方式是正确的,但我现在没有时间这样做。这种方法将起作用。承诺:) ps - 如果你正在为iOS做这个工作,有一个这样的例子。

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

我正在使用android和chrome进行测试并在两者上获取错误。我开始时使用的是确切的功能,但仍然出现错误 - 但会再次尝试.. – sirmdawg 2012-05-02 18:52:13

+0

'不能调用方法'showWebPage'的undefined' – sirmdawg 2012-05-02 18:54:14

+0

尝试删除childbrowser = childbrowser.install()并且只有ChildBrowser.install ()。 – 2012-05-02 19:55:38

1

据我所知,ChildBrowser还不完全兼容科尔多瓦。

在任何情况下,听起来好像在您尝试与ChildBrowser插件通信之前,cordova并未完成初始化。

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

+0

Phonegap有一个官方博客文章,谈论支持构建儿童浏览器:\ – sirmdawg 2012-05-06 22:11:24

0

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

我发现,如果您引用的图像不是真正存在的,文件名或图像的拼写错误就没有出现,因为设计人员还没有给出它(我的场景),设备就不会触发。结果是插件不能正确安装。

在onload事件中注册deviceready事件是一种行之有效的方法,只要您的html很好,没有任何东西丢失。

希望这可以帮助其他人。

+0

您可以举个例子吗? 我试着在'startup()'函数中添加'onload =“startup()”',包括我的onDeviceReady() – sirmdawg 2012-05-08 01:59:47

0

将你的phonegap/cordova更新到1.7.0,并从github获取childbrowser最新的代码。 它应该可以正常工作。

+0

你能把我链接到这些资源吗?我似乎无法得到它的工作.. – sirmdawg 2012-05-09 19:31:25

+0

https://github.com/phonegap/phonegap-plugins/tree/master/Android/ChildBrowser – Mahfuz 2012-05-19 05:27:39

0

无法使用桌面浏览器的插件childbrowser。它只适用于设备或模拟器,所以你得到这个错误。

相关问题