的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之前尝试绘制图表,尽管它通常会充分加载快速,你的用户应该永远不会注意到一个区别)
我也遇到了白屏问题,我不得不作弊了一点。对于我的PhoneGap + JQM应用程序,我实际上在我的初始化过程中执行了google.load,并且setOnLoadCallback设置了一个标志,表明它已准备就绪。然后我有一个setInterval()监视它被设置的标志。 – Anthony 2012-08-31 23:14:04
我能从这个解决方案中继续。忘了提供信用,现在就这样做 - 谢谢! – joncys 2013-02-05 11:14:20
+1。必须将'google.load()'片段移动到头部。在桌面浏览器中崩溃了我的webapp。 – Mikhail 2013-05-09 23:53:54