安卓浏览器没有'在页面重新加载时加载Google Maps API

Android browser doesn't load Google Maps API on page reload

本文关键字:加载 新加载 API Maps Google 浏览器      更新时间:2023-09-26

我正在使用以下函数动态加载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.oogleMapsCallback不会触发。它在Chrome和iOS浏览器中运行良好。

这就像是缓存了脚本,然后就不会再重新加载了。我试着在URL中添加一个时间戳参数,但没有帮助。

如何确保回调始终启动?

更新:

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

使用顶级函数作为回调没有什么区别。

重新加载时没有JavaScript错误。

我应该提到的是,我正在使用安卓2.3.4的HTC Evo 4G,我的应用程序是用jQuery Mobile构建的。

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

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

你能在手机上试试吗?点击jsfiddle中的"Debug on mobile"(顶部栏中"Run"右侧的按钮),打开它给你的url(类似于http://jsfiddle.net/m/ABC)在Android浏览器中。你应该得到一个弹出窗口,上面写着"called called"。试着重新加载页面,看看它是否有效。

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