的PhoneGap(科尔多瓦)的应用程序崩溃加载谷歌图表API

问题描述:

我在iPhone模拟器的PhoneGap(科尔多瓦)的应用程序崩溃加载谷歌图表API

测试这个程序,每当我运行此代码时:完全

google.load("visualization", "1", {packages:["corechart"]}); 

我PhoneGap的应用程序崩溃的白色屏幕。我有一个页面,里面有一些随机内容和一个按钮,它被分配了一个.click()jQuery监听器来开始加载谷歌图表api。每当我点击那个按钮,一切消失,我留下一个空白的屏幕。

下面的代码:

$('#chartsThirdStep').live('pageinit',function(event){ 

    $("#chartThirdStepGoButton").click(function(event){ 

     parseChartInfo(); 
    }); 
}); 

function parseChartInfo() { 

    console.log("parseChartInfo()"); 
    google.load("visualization", "1", {packages:["corechart"]}); 
    // app completely crashes here - all jquery mobile stuff dissapears 
    // and i'm left with a blank screen on the simulator. 
    //google.setOnLoadCallback(drawChart); 
} 

我使用:

  • 的Xcode 4.2版
  • 科尔多瓦v1.9.0
  • jQuery Mobile的V1.1.1
  • jQuery的V1 .7.1
  • https://www.google.com/jsapi
  • 的Mac OS X v10.6.8
  • iPhone模拟器V5.0(272)

首先,你需要加载API “准备就绪” 事件处理外,如装载机似乎没有不在其他功能中正常工作。
其次,将click事件处理程序放在google.load回调中,这样可以防止在API加载之前分配点击事件(因此用户无法在加载API之前尝试绘制图表,尽管它通常会充分加载快速,你的用户应该永远不会注意到一个区别)

+0

我也遇到了白屏问题,我不得不作弊了一点。对于我的PhoneGap + JQM应用程序,我实际上在我的初始化过程中执行了google.load,并且setOnLoadCallback设置了一个标志,表明它已准备就绪。然后我有一个setInterval()监视它被设置的标志。 – Anthony 2012-08-31 23:14:04

+0

我能从这个解决方案中继续。忘了提供信用,现在就这样做 - 谢谢! – joncys 2013-02-05 11:14:20

+0

+1。必须将'google.load()'片段移动到头部。在桌面浏览器中崩溃了我的webapp。 – Mikhail 2013-05-09 23:53:54