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

Заранее за вашу помощь.Вопросы о getScript JQuery в()

ответ

6

1) Запросы jQuery для скриптов через AJAX никогда не кэшируются, если вы не укажете это как опцию в функции $ .ajax(). Из documentation: «кэш

, Boolean

По умолчанию: правда, ложь для DATATYPE 'сценария' и 'JSONP'

Если установлено значение ложно это заставит страницы, которые вы запрос не кэшироваться браузером ».

2) Я думаю, мне нужно увидеть образец кода, чтобы понять эту часть вопроса.

3) Вы не можете ничего сделать, если $ .getScript() терпит неудачу. Но, вы должны знать, что $ .getScript() это просто версия короткой рукой $ .ajax(), equivilant к:

$.ajax({ 
    url: url, 
    dataType: 'script', 
    success: function(data) { 
    // 
    } 
}); 

Это означает, что вы можете реализовать error обратного вызова, чтобы сделать что-то умное если файл не загружается, то есть:

$.ajax({ 
    url: url, 
    dataType: 'script', 
    success: function(data) { 
    // 
    }, 
    error: function(XMLHttpRequest, textStatus, errorThrown) { 
    alert("panic"); 
    } 
}); 
+0

Пример для # 2: '$ ('a [rel * = facebox]'). Facebox()' - поэтому он сначала загрузит файл, а затем загрузит facebox (лайтбоксы)? – 3zzy

+0

@Nimbuz: 99% уверены, да. Хотя это вполне может быть специфичным для браузера. – GlenCrawford

+0

Отлично, большое спасибо за подробные ответы! :) – 3zzy

1

в дополнение к ответу Глена я хотел бы предложить еще один вариант:

$.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+

Смежные вопросы