Вопрос

$.getScript("somescript.js", function() {
    alert('Load Complete');
});
  1. После нагрузки он кэшируется или он загружен снова, если ссылается не раз?
  2. Если событие зависит от этого файла загруженного, будет ли событие отказаться от отказа / таймаута в случае, если файл занимает больше времени для загрузки или не загружается?
  3. Как я могу проверить и сделать что-то в случае, если файл не будет загружаться по какой-то причине?

Заранее спасибо за вашу помощь.

Это было полезно?

Решение

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+

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top