2016-05-02 75 views
1

我试图添加一个加载模式到HTML页面,而一些JavaScript正在执行。我的问题是,当这些脚本完成执行时我无法注意到。JavaScript回调,当页面中的一些脚本已执行

我已经试过:

$.when(
    $.getScript("/script1.js"), 
    $.getScript("/script2.js"), 
    $.getScript("/script3.js"), 
    $.Deferred(function(deferred){ 
     $(deferred.resolve); 
    }) 
).done(function(){ 
    console.log('everything have been executed!'); 
}); 

但随着getScript JQuery documentation说:脚本已经加载

回调被触发,但不一定执行。

有没有办法为这样的事件设置回调?

回答

0

您可以尝试使用$ .ajax来加载脚本。

$.ajax({ 
    async:false, 
    url:'/script.js', 
    type:'GET', 
    data:null, 
    dataType:'script', 
    success:function(){ 
     console.log('Executed') 
    } 
}); 

异步需要是假的,所以它加载和第一执行脚本,运行成功功能之前。

+2

'$ .getScript'实际上使用'$ .ajax'方法。这只是一个简写。 OP的问题显然不是加载脚本。它知道是否执行了惰性加载脚本中的函数。 – DavidDomain

+0

@DavidDomain异步是我的答案,这意味着它首先加载并执行脚本,然后执行成功函数,而$ .getScript异步是真实的。我编辑了原始答案,使其更加清晰。 – finbae

+2

Async false已弃用。 [同步​​和异步请求](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Synchronous_and_Asynchronous_Requests) – DavidDomain

相关问题