0

XMLHttpRequest と eval を使用して underscorejs を読み込もうとしています

function includeScriptSync(scriptUrl)
{
    var xmlhttp = new XMLHttpRequest();

    xmlhttp.open("GET", scriptUrl, false);
    xmlhttp.onreadystatechange = function()
    {
        if ((xmlhttp.status == 200) && (xmlhttp.readyState == 4))
        {
            eval(xmlhttp.responseText);
        }
    };
    xmlhttp.send();
}
includeScriptSync("jquery.min.js");
includeScriptSync('underscore-min.js');
includeScriptSync('jquery.watermark.min.js');
includeScriptSync('polyfills.js');

console.log(_); //here jQuery is defined but underscore is not defined(i.e. typeof of _ === "undefined")

しかし、jQueryがロードされているにもかかわらず、結局アンダースコアは定義されていません。

アンダースコア js の読み込みが失敗する理由はありますか?

Underscore 1.5.1 と jQuery 1.9.1 を使用しています

編集: jQuery 用にさらに 2 つのプラグインを追加し、それらが読み込まれました。

$(this).watermark が定義されており、ポリフィルについても同様です

4

1 に答える 1

1

onreadystatechangeハンドラーが解雇されていることは確かですか?

同期リクエストを作成する場合は、イベントをリッスンしないでください。代わりにこれを試してください。

function includeScriptSync(scriptUrl)
{
    var xmlhttp = new XMLHttpRequest();
    xmlhttp.open('GET', scriptUrl, false);
    xmlhttp.send(null);
    if (xmlhttp.status === 200) {
        eval(xmlhttp.responseText);
    }
}
于 2013-09-06T09:34:40.980 に答える