Я выполняю тестирование 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".
Спасибо!