0

Modernizr과 yepnope.js를 사용하여 전체 비동기 스크립트를로드하는 중입니다. 비동기 스크립트로드를 사용하기 위해 애플리케이션의 구조를 어떻게 적용 할 수 있는지 궁금합니다.JavaScript 파일의 구조와 Modernizr/yepnope

는 지금 구조는 다음과 유사합니다

... 
<head> 
    <script src=jquery.js></script> 
    <script src=plugin1.js></script> 
    <script src=plugin2.js></script> 
    <script src=plugin3.js></script> 
    <script src=global.js></script> 
</head> 
<body> 

이 코드는 응용 프로그램 전체 require D 인 header.php 파일에 있습니다. 문서 본문 섹션 (다른 PHP 파일), 나는 다음과 같은 몇 가지 자바 스크립트 파일이있을 수 있습니다 :

$(document).ready(function() { 
    $('.searchDate').myCoolPlugin({ /* some options */ }); 
}); 

:

... 
    <script src=moduleA.js></script> 
    <script src=someScripts.js></script> 
</html> 

여기 moduleA.js 및 someScripts.js가 포함 할 수 있습니다 무엇의 간단한 예입니다 그리고 someScripts.js는 : 나는 모더 나이저를 사용하고있는 경우

$(document).ready(function() { 
    $('#departureDate, #arrivalDate').myCoolPlugin({ /* some options */ }); 
}); 

, 그 페이지의 상단에 나는 다른 플러그인 스크립트를 제거하는 것이며, global.js 내가 쓸 것 :

Modernizr.load([ 
    { 
     test: $.fn.myCoolPlugin, 
     nope: 'plugin1.js', 
     complete: function() { 
      $(document).ready(function() { 
       $('.filterDates').myCoolPlugin(); 
      } 
     } 
    } 
]); 

moduleA.js 및 someScripts.js가 실행될 때까지 myCoolPlugin이로드되었음을 어떻게 보장합니까? Modernizr.load(), 그 파일에 플러그인 초기화를 래핑 할 수 있지만 그 코드의 불필요한 중복 것처럼 보입니다.

답변

0

질문을 올바르게 이해했다면 필요한 스크립트가 Modernizr과 함께로드 된 후에 본문 스크립트를 실행하고 싶습니다.

// Header script 
var race_won = false; 
var load_body_script = function() { 
    race_won = true; 
}; 

Modernizr.load([ 
    { 
     test: ..your condition.., 
     yep: ..test success.., 
     nope: ..test fail.., 
     complete: function() { 
      $(document).ready(function() { 
       $('.filterDates').myCoolPlugin(); 
       load_body_script(); 
      } 
     } 
    } 
]); 

// Body script 
var body_script = function() { 
    // .. your code here .. 
} 
if (race_won) { 
    body_script(); 
} 
else { 
    load_body_script = body_script; 
} 
:

당신이 뭔가를 할 수 있습니다