Javascript 如何识别加载的一个js文件?

Javascript 如何识别加载的一个js文件?,javascript,onload,Javascript,Onload,我尝试在页面加载时显示进度条。我想在加载js文件后更改进度条的宽度。在最终加载所有文档后,将进度条的宽度设置为100%。现在我需要识别使用javascript加载的js文件。 这可能吗?请注意。对于内部js文件加载识别: 由于可以从其他文件访问函数和变量,因此可以通过调用函数来设置全局进度变量的值并显示其值 //on page or head js file var progress = 0; function displayProgress() { //show progress based

我尝试在页面加载时显示进度条。我想在加载js文件后更改进度条的宽度。在最终加载所有文档后,将进度条的宽度设置为100%。现在我需要识别使用javascript加载的js文件。
这可能吗?请注意。

对于内部js文件加载识别:

由于可以从其他文件访问函数和变量,因此可以通过调用函数来设置全局进度变量的值并显示其值

//on page or head js file
var progress = 0;

function displayProgress()
{
//show progress based on 'progress' variable
}
//file1.js
progress += 10;
displayProgress();
...
//file2.js
progress += 20;
displayProgress();
...
对于外部js文件,这是很好的。其主要思想是定期检查是否存在外部函数(
typeoffixpng==“function”
),如果存在,则停止检查并显示进度

下面是用 传入的回调:

 function loadExtScript(src, callback) {   var s =   document.createElement('script');   s.src = src; document.body.appendChild(s); // if loaded...call the callback }
Firefox允许您监听脚本上的onload事件 要素:

s.onload=回调

使用Internet Explorer,您可以等待脚本上的状态更改 要素:

s.onreadystatechange=function(){if(this.readyState!=“已加载”
)return;callback.call();}

Safari的问题是——Safari没有事件更改,所以 我们无法判断脚本何时加载。这就是我提出的解决方案 提出(此解决方案也应适用于Opera):

该函数将测试作为参数。既然你是设计师 对于应用程序,您将知道什么是成功测试。一旦测试成功 如果为true,它将执行回调。一个简单的测试就是检查 函数是否存在,例如:

loadExtScript('/fixpng.js', function() {   return (typeof fixpng ==
'function'); }, myCallbackFunction);

对于内部js文件加载识别:

由于可以从其他文件访问函数和变量,因此可以通过调用函数来设置全局进度变量的值并显示其值

//on page or head js file
var progress = 0;

function displayProgress()
{
//show progress based on 'progress' variable
}
//file1.js
progress += 10;
displayProgress();
...
//file2.js
progress += 20;
displayProgress();
...
对于外部js文件,这是很好的。其主要思想是定期检查是否存在外部函数(
typeoffixpng==“function”
),如果存在,则停止检查并显示进度

下面是用 传入的回调:

 function loadExtScript(src, callback) {   var s =   document.createElement('script');   s.src = src; document.body.appendChild(s); // if loaded...call the callback }
Firefox允许您监听脚本上的onload事件 要素:

s.onload=回调

使用Internet Explorer,您可以等待脚本上的状态更改 要素:

s.onreadystatechange=function(){if(this.readyState!=“已加载”
)return;callback.call();}

Safari的问题是——Safari没有事件更改,所以 我们无法判断脚本何时加载。这就是我提出的解决方案 提出(此解决方案也应适用于Opera):

该函数将测试作为参数。既然你是设计师 对于应用程序,您将知道什么是成功测试。一旦测试成功 如果为true,它将执行回调。一个简单的测试就是检查 函数是否存在,例如:

loadExtScript('/fixpng.js', function() {   return (typeof fixpng ==
'function'); }, myCallbackFunction);

如果您知道至少一个已定义的命名空间(几乎所有库和插件都有:例如jQuery、jQuery.ui、jQuery.mobile、toastr、DataTable等)或正在加载的脚本文件引入的一个全局变量名,则可以执行以下操作:

(function(undefined) {
    var scriptFilesLoaded = false,
        files = [],
        timer = setInterval(function(){
            try {
                files = [
                    jQuery, 
                    jQuery.mobile, 
                    jQuery.ui,
                    someGlobalVariableName
                ];
                if(files.indexOf(undefined)<0){
                    scriptFilesLoaded = true;
                    clearInterval(timer);
                }
            }
            catch(e) {
                console.warn('Preloader in action: Script files not loaded yet.');
            }
        },200);
})();
(函数(未定义){
var scriptfilesload=false,
文件=[],
计时器=设置间隔(函数(){
试一试{
文件=[
jQuery,
jQuery.mobile,
jQuery.ui,
半球形变形虫
];

如果(files.indexOf(undefined)如果您知道至少有一个已定义的名称空间(几乎所有库和插件都有它:例如jQuery、jQuery.ui、jQuery.mobile、toastr、DataTable等)或正在加载的脚本文件引入的一个全局变量名,则可以执行以下操作:

(function(undefined) {
    var scriptFilesLoaded = false,
        files = [],
        timer = setInterval(function(){
            try {
                files = [
                    jQuery, 
                    jQuery.mobile, 
                    jQuery.ui,
                    someGlobalVariableName
                ];
                if(files.indexOf(undefined)<0){
                    scriptFilesLoaded = true;
                    clearInterval(timer);
                }
            }
            catch(e) {
                console.warn('Preloader in action: Script files not loaded yet.');
            }
        },200);
})();
(函数(未定义){
var scriptfilesload=false,
文件=[],
计时器=设置间隔(函数(){
试一试{
文件=[
jQuery,
jQuery.mobile,
jQuery.ui,
半球形变形虫
];

if(files.indexOf(未定义)用代码解释你自己你只是想检测正在加载的文件,还是想检测正在完成的文件中排队的函数?如果是前者,Mikhail提供了一个粗略的示例,说明你可以基于此进行构建。用代码解释你自己你只是想检测正在加载的文件,还是想检测正在加载的文件在那些正在完成的文件中排队的函数?如果是前者,Mikhail提供了一个粗略的示例,说明您可以基于它进行构建。问题是脚本文件可能是外部资源,因为如果它们不是,它们应该或多或少地合并到一个文件中。当然,我们对环境的了解还不够更新了我对内部和外部js文件的回答问题在于,脚本文件可能是外部资源,因为如果不是,它们应该或多或少地合并到一个文件中。当然,我们对环境的了解还不够,所以不能肯定地说……更新了我对内部和外部js文件的回答js文件