我正在使用此功能动态加载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构建的。
答案 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皮肤设备进行进一步测试。