이상한 질문 일지 모르지만 문제가 있으며 해결할 수는 있지만 더 많은 것이 있는지 궁금합니다. 우아한 방법. 기본적으로, 나는 비동기가 아닌 modernizr.load() 작업을 동기식으로 만들 수 있는지 알아야합니다.Modernizr이 스크립트를 synchroneous로로드하도록 강제하는 방법이 있습니까 (차단해야 함)
코드는
에게 ...이 (앞서 반 의사 코드)처럼 index.html을 보이는
<script src="jquery.js"></script>
<script src="modernizr-with-yepnope.js">
<script>
var App = {};
(function($)) {
$(function() {
initAllAppMethods();
});
})(jQuery);
</script>
<script>
modernizr.load([
{
test: 'window.matchmedia',
nope: 'polyfillmatchmedia.js'
},
'script.js'
]);
</script>
SCRIPT.JS
<script>
App.myAppmethod = function() {
// ...
}
</script>
내가 겪고있는 문제는 modernizr.load의 비동기 적 특성 때문에 $ .ready 함수가 실제로 내 App 메소드가 App 객체에 추가되기 전에 발생한다는 것입니다. (또는 적어도 내가 생각하는 것이 문제입니다.). 따라서 본질적으로 아무 것도 발생하지 않습니다. 앱이 아직 $ .ready가 실행될 때 어떤 메소드도 없습니다.
이제 scripts.js의 끝에 initAllAppMethods()를 호출하여이 문제를 쉽게 해결할 수 있지만로드 순서의 문제는 숨겨져 있습니다. modernizr.load()가 script.js를로드해야하는 이유는 polyfill이 활성 상태인지 여부를 알아야하기 때문입니다.
그래서 ... 지금까지 읽은 사람이라면 ... 내가 왜 modernizr.load()를 통해 모든 것을로드하지 않는지 궁금하다면, 나는 CMS 때문에이 순서에 다소 구속되어 있기 때문입니다. 나는 이것을 구현하고있다. modernizr.load()가 scripts.js를 동기화하도록 만들 수 있다면 아무런 문제가 없을 것입니다. (나는 생각한다).