2013-09-30 3 views
0

내 페이지에서 후속 스크립트를 실행하기 전에로드 할 여러 테스트 조건과 파일이 있습니다. 내 모든 파일이로드 된 후 콜백을 시작하는 방법이 있습니까?modernizr/yepnope가 모든 파일을로드 한 후 콜백을 실행합니다.

다음은 this post에 의해 제안되며 내 의도를 전달하지만 실제로 작동하지 않습니다. 1.js 또는 2.js로드가 완료되기 전에 complete 함수가 실행됩니다.

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'이벤트가 시작되기 전에이 모든 내용이로드되지는 않습니까? 그 전에 animationInit을 호출해야합니까? –

답변

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); } 
    } 
]);