我的当前设置是用户点击链接动态加载内容,其中还包括加载脚本。我想测试外部脚本(特别是Google Maps JS API)是否已加载,如果没有加载,则继续加载。
这是我的代码:
if(_href == "contact.html") {
// this will run everytime we navigate/click to go to "contact.html"
console.log("contact.html loaded");
// load the contact.js script, and once loaded,
// run the initMap function (located inside contact.js) to load the map
$.getScript("contact.js", function() {
// store the length of the script, if present, in a varialbe called "len"
var len = $('script[src="https://maps.googleapis.com/maps/api/js"]').length;
console.log(len);
// if there are no scripts that match len, then load it
if (len === 0) {
// gets the script and then calls the initMap function to load the map
$.getScript("https://maps.googleapis.com/maps/api/js", initMap);
console.log("Google Maps API loaded")
} else {
// otherwise the script is already loaded (len > 0) so just run the initMap function
initMap();
}
});
然而,这并不能成功。每次用户点击进入联系页面时,“len”始终为0,无论脚本是否已加载(当加载时,“len”应大于0)。这会导致日志中的错误: 日志错误
$.getScript
的回调函数中,脚本总是被加载,但你正在加载contact.js
并似乎期望 Google 地图被加载,尽管这两个脚本似乎没有任何关系? - adeneocontact.js
包含一个函数,需要先加载Google Maps - 这个js文件基本上创建地图,设置其参数等等 - 所以必须先加载Google Maps,否则会出现错误。在调用contact.js
中的函数之前,我需要同时加载contact.js
和 Google Maps API。我只想加载一次Google Maps,否则会出现错误(但是在加载contact.js
时不会出现这样的错误)。 - Attila