javascript - 通过 jQuery 将脚本附加到 head 时是否需要 setTimeout?

标签 javascript jquery

我需要调用在 jQuery 追加方法中包含的 javascript 文件中声明的函数:

var s = document.createElement("script");
s.type = "text/javascript";
s.src = scriptUrl;
jQuery("head").append(s); 

setTimeout(function(){ 
  jQuery('.divClass').banner({
      duration: 2000
  }); 
},100);

我认为加载脚本所需的时间可能比 setTimeout 中设置的给定时间长,可能会出现问题。 .

如果脚本包含在 html 中 <script>标签,然后浏览器将等待脚本加载。但如果我将脚本包含在 jQuery append() 中,效果是一样的方法?我需要setTimeout在这种情况下?如何计算所需时间?

最佳答案

使用JQuery的getScript方法:

$.getScript( "ajax/test.js", function( data, textStatus, jqxhr ) {
    console.log( data ); // Data returned
    console.log( textStatus ); // Success
    console.log( jqxhr.status ); // 200
    console.log( "Load was performed." );
});

或 native (取自 http://www.nczonline.net/blog/2009/07/28/the-best-way-to-load-external-javascript/ ):

function loadScript(url, callback){

    var script = document.createElement("script")
    script.type = "text/javascript";

    if (script.readyState){  //IE
        script.onreadystatechange = function(){
            if (script.readyState == "loaded" ||
                    script.readyState == "complete"){
                script.onreadystatechange = null;
                callback();
            }
        };
    } else {  //Others
        script.onload = function(){
            callback();
        };
    }

    script.src = url;
    document.getElementsByTagName("head")[0].appendChild(script);
}

关于javascript - 通过 jQuery 将脚本附加到 head 时是否需要 setTimeout?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23539363/

相关文章:

JavaScript,无字符串

javascript - 使用 jquery 删除未使用的 li 类

javascript - 是否可以使用 Angular HTML 文档进行 $compile

c# - asp.net 将值从 JS/jquery 传递到 C# 背后的代码

javascript - raphael.js 中的拖动约束和缩放

javascript - 显示隐藏的跨度元素Javascript

javascript - 跨域自动登录

javascript - 如何将 jQuery 变量用于此图片库叠加层?

javascript - 允许在 nodejs 中每毫秒运行一次以上 setInterval

jquery - HTML 中的交替行颜色?