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加载失败的任何想法?

我正在使用下划线 1.5.1 和 jQuery 1.9.1

编辑:我为 jQuery 添加了另外 2 个插件,它们已加载。

$(this).watermark 已定义,对于 polyfill 也是如此

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 回答