Вопросы о jQuery's genscript ()
-
01-10-2019 - |
Вопрос
$.getScript("somescript.js", function() {
alert('Load Complete');
});
- После нагрузки он кэшируется или он загружен снова, если ссылается не раз?
- Если событие зависит от этого файла загруженного, будет ли событие отказаться от отказа / таймаута в случае, если файл занимает больше времени для загрузки или не загружается?
- Как я могу проверить и сделать что-то в случае, если файл не будет загружаться по какой-то причине?
Заранее спасибо за вашу помощь.
Решение
1) Запросы JQuery для скриптов через AJAX никогда не кэшируются, если вы не укажете, что в качестве опции в функции $ .ajax (). Из документация:
"кеш, логический
По умолчанию: True, False для DataType «Script» и «JSONP»
Если установлено значение false, он заставит страницы, которые вы запрашиваете не быть кэшированным браузером. "
2) Я думаю, что мне нужно увидеть пример код, чтобы понять эту часть вопроса.
3) Вы не можете ничего сделать, если $ .getscript () не удается. Но вы должны знать, что $ .getscript () - это просто кратковременная версия $ .ajax (), равновесию:
$.ajax({
url: url,
dataType: 'script',
success: function(data) {
//
}
});
Это означает, что вы можете реализовать error
Обратный вызов, чтобы сделать что-то умное, если файл не загружается, т.е.
$.ajax({
url: url,
dataType: 'script',
success: function(data) {
//
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert("panic");
}
});
Другие советы
В дополнение к ответу Глен, я хотел бы предложить другой вариант:
$.getScript({
url: "foo.js",
cache: true // or false, depending on your preference. in most cases you would want it true.
}).done(function(){
// do something when script was loaded and run
}).fail(function(){
// do something when script failed to load
});
Поддерживается на jQuery 1.12.0+