【问题标题】:cordova 1.6.1 android Uncaught TypeError: Cannot call method 'showWebPage' of undefinedcordova 1.6.1 android Uncaught TypeError:无法调用未定义的方法'showWebPage'
【发布时间】:2012-04-24 09:53:33
【问题描述】:

我刚刚将phonegap 1.4.1升级到1.6.1,还把子浏览器从https://github.com/libbybaldwin/phonegap-plugins/tree/master/Android/ChildBrowser升级了

我已经在 plugins.xml 文件中添加了这一行

<plugin name="ChildBrowser" value="com.phonegap.plugins.ChildBrowser.ChildBrowser"/>

但是当我打电话给这个时

window.plugins.childBrowser.showWebPage( "http://google.com", {
        showLocationBar: true
    });

我收到此错误 Uncaught TypeError: Cannot call method 'showWebPage' of undefined

【问题讨论】:

  • 几天来一直有同样的问题。希望我们能找到解决办法。
  • 它在三星galaxy pop或类似类型的设备中工作,但在HTC或GALAXY S II或索尼爱立信Experia中不工作
  • 在更新了 cordova 1.7.0 和更新的 childbrowser 代码之后,现在它可以工作了
  • 你能链接新的儿童浏览器代码吗?

标签: android cordova phonegap-plugins


【解决方案1】:

关于 1.4.1 与 1.6.1:

请注意,我的 phonegap-plugins github 存储库是我在互联网时间“冻结”的,以允许继续使用 phonegap 1.4.1 和那个时代的插件。

继续使用cordova 1.6.1+,您需要继续使用官方非官方插件

https://github.com/phonegap/phonegap-plugins

注意:这些插件可能会更新,也可能不会与 cordova 1.6.1 一起使用。请阅读他们个人的 README 和下面来自 phonegap 工程师的博客:

http://simonmacdonald.blogspot.com/2012/04/migrating-your-phonegap-plugins-to.html

总结:从 1.4.1 迁移到 1.6.1+ 并使用 phonegap 插件需要一些警惕,因为这两个版本之间有很多内部变化。

【讨论】:

  • 即使使用官方非官方插件,我也会收到同样的错误。
  • 它在三星galaxy pop或类似类型的设备中工作,但在HTC或GALAXY S II或索尼爱立信Experia中不工作
【解决方案2】:

我能够通过使用此代码解决此错误:

try {
var cb = new ChildBrowser();
console.log(cb);
cb.showWebPage('http://www.google.com');
}catch (err){
console.log(err);
}

虽然这导致了另一个错误:

PhoneGap Build + Cordova + ChildBrowser Error

如果您没有收到任何错误并且此解决方案有效 - 请告诉我!

【讨论】:

  • 我收到此错误 TypeError: Object # has no method 'exec'
  • Some with me :\ 你使用的是 phonegap build 还是 eclipse ?
【解决方案3】:

几天来一直在与同样的错误作斗争,发现您无法立即从 index.html 调用 childBrowser,可能是因为 childBrowser 插件的初始化需要一些时间才能完成。

此解决方案有效:

setTimeout(function() {
    window.console.log('Opening Childbrowser...');
    window.plugins.childBrowser.showWebPage("http://www.google.com", { showLocationBar: true });
}, 3500);

换句话说:您必须等待 childBrowser 对象可用,当然还有更优雅的解决方案。

免责声明:使用当前 1.7.0rc1 Cordaova 版本进行了测试,不确定这是否也适用于 1.6.1。

【讨论】:

  • 更好的是,只需通过等待 deviceready 事件来确保 Cordova 环境已初始化,如文档所述:document.addEventListener("deviceready", myInitFunc, false);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-06
  • 1970-01-01
  • 1970-01-01
  • 2012-06-12
  • 2012-11-12
  • 1970-01-01
  • 2023-03-22
相关资源
最近更新 更多