getScript docs говорит об обратном вызове успеха, что:JQuery getScript нагрузка против исполнения
«Обратный вызов обжигал после того, как сценарий был загружен, но не обязательно выполняется.»
Но в моем тестировании это не похоже на правду. На странице хоста с:
var startTime = new Date();
$.getScript("test.js")
.done(function(script, textStatus) {
console.log(textStatus);
console.log("Done callback executing now.")
})
.fail(function(jqxhr, settings, exception) {
console.log("error.");
});
загрузки следующий «test.js» сценарий, который связывает пользовательский интерфейс в течение 5 секунд:
console.log("ajaxed script starting to execute.");
var newTime = new Date();
while (newTime - startTime < 5000) {
newTime = new Date();
}
console.log("elapsed time", newTime - startTime);
console.log("ajaxed script finished executing.");
приводит к той же предсказуемой консоли вывода в обоих FF & Chrome :
ajaxed script starting to execute.
elapsed time 5000
ajaxed script finished executing.
success
Done callback executing now.
другими словами, обратный вызов не всегда срабатывает до тех пор, загружаемый скрипт не как загружается и выполняется. Это, кажется, потому что в JQuery source, функция globalEval немедленно вызове сценария:
converters: {
"text script": function(text) {
jQuery.globalEval(text);
return text;
}
}
Таковы документы неправильно? Если они верны, то в каких конкретных случаях будет успешным обратный вызов до сценарий выполнен?
Можете ли вы взять свой вопрос и уценку на https://github.com/jquery/api.jquery.com/issues? :) – gnarf
Документация определенно неверна, спасибо за головы :) –
Спасибо, github issue filed: https://github.com/jquery/api.jquery.com/issues/420 – Ben