我有一些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);
//...
}
答案 0 :(得分:0)
通过将依赖代码置于“完成”状态,可以非常简单地实现。事件(我认为可能有一个事件可能会达到同样的效果)