等到脚本下载并执行,然后等待加载DOM

时间:2016-06-09 18:18:46

标签: javascript jquery ajax dom

我有一些Javascript需要有条件地运行 - 它在requirejs表单中。此外,脚本与请求页面(包含下面的ajax调用)存在于同一服务器/域中

是否有一种确定的方法可以等到ajax获取对Javascript文件的请求被下载执行(全部完成)以及确保DOM已完全加载。以及在下载和/或Javascript失败时适应的异常处理。

我看过许多页面都使用完全不同的解决方案(sync / async,when / done / deferred [http://www.bennadel.com/blog/2124-using-deferred-objects-as-an-asynchronous-script-loader-in-jquery-1-5.htm],labjs等) - 但这些真的要等到javascript代码完成执行吗?

以下是我所拥有的,但我不确定'eval'解决方案,并且它不会检查DOM是否已完全加载(请注意,我已将dataType标记为'text',以便它不会自动执行,因为这是由eval监视的)

var myScriptFileRequest = $.ajax({
    url: '...myScriptFile.js',
    dataType: "text",
    cache: false,
    async: true
});
myScriptFileRequest.fail(function (jqXHR, textStatus) {
    document.getElementById(divId).innerHTML = "Error on if get:" + jqXHR.status + ":" + jqXHR.statusText + ":" + textStatus;
});
myScriptFileRequest.done(function (msg) {
    eval(myScriptFileRequest.responseText);
    //...
}

1 个答案:

答案 0 :(得分:0)

通过将依赖代码置于“完成”状态,可以非常简单地实现。事件(我认为可能有一个事件可能会达到同样的效果)