Android浏览器无法在页面重新加载时加载Google Maps API

时间:2012-02-23 21:17:06

标签: javascript android google-maps-api-3 android-browser

我正在使用此功能动态加载Google Maps API:

App.prototype.loadScript = function(src) {
  $(document.createElement("script")).attr({
    type: "text/javascript",
    src: src
  }).appendTo("body");
};

我将此URL作为参数传递:

"//maps.googleapis.com/maps/api/js?v=3.8&sensor=false&language=" + locale + "&callback=window.app.googleMapsCallback"

第一次加载页面时它工作正常,并且回调触发。但是,当我在Android上重新加载页面时,window.app.googleMapsCallback会触发。它在Chrome和iOS浏览器中运行良好。

就像脚本被缓存一样,并且不会再次重新加载。我已经尝试在URL中添加时间戳参数,但这没有帮助。

如何确保回调始终触发?

更新:

进一步测试后,清除缓存并重新加载也不起作用。我必须清除所有浏览器数据(通过设置 - >应用程序 - >管理应用程序)才能成功重新加载页面。

使用顶级函数作为回调没有任何区别。

重新加载时没有JavaScript错误。

我应该提一下,我正在使用搭载Android 2.3.4的HTC Evo 4G,而我的应用程序是使用jQuery Mobile构建的。

1 个答案:

答案 0 :(得分:1)

我一直在尝试使用Android模拟器重现您的问题(版本2.3.3和2.3.5。没有2.3.4版本,对不起),但我无法做到。每次重新加载页面时回调运行正常。

这是测试jsfiddle:http://jsfiddle.net/MartinodF/gbAuL/。它只包含用于测试问题的最小代码,并且排除它取决于代码库中的其他内容。

你可以在手机上试试吗?点击jsfiddle中的“在移动设备上调试”(顶部栏中“运行”右侧的按钮),然后在Android浏览器中打开它为您提供的URL(类似http://jsfiddle.net/m/ABC)。你应该得到一个弹出窗口,上面写着“回调”。尝试重新加载页面,看看它是否有效。

如果没有,那么我可以尝试使用2.3.4,HTC Sense皮肤设备进行进一步测试。