Я выполняю тестирование QUnit в IFRAME и имею рекурсивную функцию JavaScript, которая загружает все сценарии с родительской страницы в IFRAME перед запуском QUnit. Это отлично работает. Моя проблема в том, что некоторые из наших скриптов используют 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, заполняющий массив "scripts[]
" с помощью свойств JavaScript "src".
Спасибо!