簡體   English   中英

通過jQuery追加腳本時我需要setTimeout嗎?

[英]do I need setTimeout when appending script to head via jQuery?

我需要調用一個在jQuery append方法中包含的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設置的給定時間要長。

如果腳本包含在帶有<script>標記的html中,那么瀏覽器將等到腳本加載完畢。 但是如果我用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." );
});

或原生的(摘自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);
}

否則,您可以使用jQuery.getScript()。 雖然它是異步的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM