簡體   English   中英

IE9 - SCRIPT5009:“jQuery”未定義

[英]IE9 - SCRIPT5009: “jQuery” is undefined

以下代碼遇到錯誤SCRIPT5009: IE9中未定義“jQuery” (也許在較舊的IE版本中):

var $tx;
if (window.jQuery) {
    $tx = jQuery;
    if( jQuery().jquery.replace(".", "") < 17.1 ) {
        addjQuery();
    }   
} else {
    addjQuery();
}
function addjQuery() {
    document.write('<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"><\/script>');
    document.write('<script type="text/javascript">$tx = jQuery.noConflict();<\/script>');
}
document.write('<script src="workingScript.js"><\/script>');

我解決了! 這樣做很好:

var $tx;
if (window.jQuery) {
    $tx = jQuery;
    if( jQuery().jquery.replace(".", "") < 17.1 ) {
        addjQuery();
    }   
} else {
    addjQuery();
}
function addjQuery() {
    loadScript("http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js", function(){
        $tx = jQuery.noConflict(true);
    });
}
document.write('<script src="workingScript.js"><\/script>');

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);
}

workingScript.js:

(function ($) {
    // some code here
})($tx);

這里出現錯誤“$ tx = jQuery.noConflict();” 如果addjQuery函數。 如果網站已經使用了當前的jQuery版本,那么錯誤的工作正常。

有誰知道如何解決這個問題?

您的腳本在執行期間加載其他腳本,它們不會同步執行,而是異步執行。 $tx = jQuery.noConflict(); 執行不保證jQuery加載。

如果你需要同步地看到這個問題 ,或者更好的是使用像RequireJS這樣的東西來處理這個問題。 (它也允許這種后備)。

暫無
暫無

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

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