javascript - 如何延迟 document.ready 直到设置变量?

标签 javascript jquery qunit

我正在 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();
}

实际代码类似,但涉及一个 jquery 选择器,它使用 JavaScript 标记“src”属性填充数组“scripts[]”。

谢谢!

最佳答案

如果您使用的是 jQuery 1.6+,那么您可以使用 holdReady .只需在脚本顶部设置 $.holdReady(true),然后在 QUnitStart 的开头设置 $.holdReady(false)

关于javascript - 如何延迟 document.ready 直到设置变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6023036/

相关文章:

javascript - 如何让 QUnit 等待一定的时间间隔?

javascript - 带名称声明函数和不带名称声明函数的区别

javascript - 如何使用 JQuery $.scrollTo() 函数滚动窗口

Jquery 悬停功能不适用于表格

javascript - 在 JavaScript 或 jQuery 中构建数据数组

qunit - 使用 karma 和 qUnit 测试按钮点击的简单 UI

javascript - 您使用过哪些 JavaScript 单元测试和模拟框架?

javascript - 如何正确使用 Ramda/JS 编写函数

javascript - 有人可以解释一下回调函数吗?

javascript - WebSocket:如何在它死后自动重新连接