В моей текущей настройке пользователь щелкает по ссылке для динамического загрузки контента, который также включает загрузку в сценарии. Я хочу проверить, загружен ли внешний скрипт (в частности, JS API Google Maps), и если это не так, продолжайте и делайте это.Проверка наличия внешней библиотеки JS или нет
Вот мой код:
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, когда он загружен). Это приводит к этой ошибке в журнале: log error
Я действительно смущен, в обратном вызове для '$ .getScript' скрипт всегда загружен, но вы загружаете' contact.js' и, похоже, ожидаете, что Карты Google будут загружены, хотя оба сценария не будут Кажется, что-то связано друг с другом? – adeneo
вы можете найти ответ от http://stackoverflow.com/questions/9521298/verify-external-script-is-loaded – user86745458
@adeneo Извините, если я вас смутил, но я только изучал веб-разработку для month now: p Я надеюсь, что это ответит на ваш вопрос: 'contact.js' содержит функцию, для которой сначала необходимо загрузить Карты Google - этот файл js в основном создает карту, устанавливает ее параметры и т. д. - поэтому необходимо, чтобы Google Maps сначала загружен, иначе я получаю сообщение об ошибке. Мне нужно как «contact.js», так и API Google Maps загружаться до того, как я вызову функцию внутри 'contact.js'. Я только хочу, чтобы Карты Google загружались один раз, в противном случае я получаю сообщение об ошибке (однако, я не получаю таких ошибок при загрузке 'contact.js' – Attila