该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." );
});
Run Code Online (Sandbox Code Playgroud)
加载以下"test.js"脚本,该脚本占用UI 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.");
Run Code Online (Sandbox Code Playgroud)
在FF和Chrome中产生相同的可预测控制台输出:
ajaxed script starting to execute.
elapsed time 5000
ajaxed script finished executing.
success
Done callback executing now.
Run Code Online (Sandbox Code Playgroud)
换句话说,在加载和执行加载的脚本之前,成功回调不会触发.这似乎是因为在jQuery 源代码中,globalEval函数立即调用脚本:
converters: {
"text script": function( text ) {
jQuery.globalEval( text );
return text;
}
}
Run Code Online (Sandbox Code Playgroud)
那些文档错了吗?如果它们是正确的,那么在脚本执行之前成功回调的具体情况是什么?
| 归档时间: |
|
| 查看次数: |
5876 次 |
| 最近记录: |