我正在 IFRAME 中进行 QUnit 测试,并且有一个递归 JavaScript 函数,可以在启动 QUnit 之前将所有脚本从父页面加载到 IFRAME。这很好用。我的问题是我们的一些脚本使用 document.ready 来启动。
例如:
$(document).ready(function () {
// blah
});
做他们的工作。我宁愿不要仅仅为了测试而更改生产代码,并且我不希望这些生产脚本认为 IFRAME 文档在每个脚本都被加载之前已经“准备就绪”。
我怎样才能延迟“document.ready”本身?
这是我的伪代码,为您提供一个示例:
scripts[0] = "/foo/bar.js";
scripts[1] = "/blah/blah.js";
function RecursiveScriptStart(){
// I want to set document.ready = false right here!
if(scripts.length == 0) {
QUnitStart();
return;
}
RecursiveScriptLoader(0, scripts);
}
function RecursiveScriptLoader(currentScriptID, scripts) {
$.getScript(scripts[currentScriptID], function () {
if (currentScriptID == (scripts.length - 1)) {
QUnitStart();
}
else {
RecursiveScriptLoader(currentScriptID + 1, scripts);
}
});
}
function QUnitStart() {
// I want to set document.ready = true right here!
QUnit.stop();
QUnit.start();
}
实际代码类似,但涉及scripts[]
使用 JavaScript 标记“src”属性填充数组“”的 jquery 选择器。
谢谢!