2013-09-30 6 views
0

У меня есть несколько условий тестирования и файлы для загрузки, прежде чем запускать последующие скрипты на моей странице. Есть ли способ запустить обратный вызов после загрузки всех моих файлов?Выполнять обратный вызов после того, как modernizr/yepnope загрузил все файлы

this post Предлагается следующее: Функция в полном объеме срабатывает до того, как 1.js или 2.js закончили загрузку.

Modernizr.load([ 
    { 
     test: App.isSmallScreen, 
     yep: '1.js', 
     nope: '2.js' 
    }, 
    { 
     test: App.isTouch, 
     yep: '3.js' 
    }, 
    { 
     test: Modernizer.csstransitions, 
     nope:4.js 
    }, 
    { 
     complete: animationInit 
    } 
]); 
+0

Это звучит сложно, и я не уверен, что вы можете сделать это с каркасом. Какой может быть вариант - иметь функцию приема, которая вызывается на 1,2,3,4 и т. Д. (Это немного беспорядочно), и только вызывает полную функцию, как только все были получены. Фу, извините, если это решение. –

+0

Текущее решение - вложить все тесты в качестве функций обратного вызова. Это может быть менее беспорядочно :) –

+0

Yikes. BTW не все это загружается до события onload? Перед этим нужно вызвать анимацию? –

ответ

0

Извинитесь за такой дешевый трюк, но это было лучшее, что я мог придумать. Однако это может быть улучшено.

Возможно, было бы довольно просто вставить это или расширить Modernizr, чтобы каким-то образом построить «законченное» событие, чтобы сделать это более чисто.

var completed = [] 
var complete = function(i) { 
    completed.push(i) 
    if (completed.length === 3) animationInit(); 
} 

Modernizr.load([ 
    { 
     test: App.isSmallScreen, 
     yep: '1.js', 
     nope: '2.js', 
     complete: function() { complete(1); } 
    }, 
    { 
     test: App.isTouch, 
     yep: '3.js' 
     complete: function() { complete(2); } 
    }, 
    { 
     test: Modernizer.csstransitions, 
     nope:4.js 
     complete: function() { complete(3); } 
    } 
]);