2012-08-07 3 views
3

jQuery 및 전체 사이트 및 모든 브라우저와 관련된 기타 JavaScript 파일을로드하는 프로젝트에서 Require JS를 사용하고 있습니다.RequireJS에서 조건부 주석을 사용하여 IE7/8 전용 jQuery를로드하십시오.

그러나 Internet Explorer 7의 일부 조건부 jQuery를 사용해야합니다. 페이지 머리 부분에 이것을 넣으려고 시도했지만 스크립트가 jQuery를 찾을 수없는 것처럼 보입니다. 이것은 jQuery보다 먼저로드되기 때문입니다.

<script data-main="/@ViewBag.ScriptsFolder/main" src="/scripts/require.js" type="text/javascript"></script> 
    <!--[if (gte IE 6)&(lte IE 8)]> 
     <script type="text/javascript" src="/Scripts/ie.js"></script> 
    <![endif]--> 

이 문제를 해결할 수있는 방법이 있습니까? 또한 같은 문제로 인해 작동하지 않는 Selectivizr을이 방식으로로드하려고합니다.

감사

답변

16

당신은 다음을 검사하고 기존 main 스크립트 내부의 IE 종속성을로드의 html 요소에 조건부 IE 고유의 클래스를 사용할 수 있습니다. 그래서, 문서의 상단과 같습니다 main.js 내부의 다음

<!--[if lt IE 7]> <html class="ie lt-ie9 lt-ie8 lt-ie7"> <![endif]--> 
<!--[if IE 7]> <html class="ie lt-ie9 lt-ie8"> <![endif]--> 
<!--[if IE 8]> <html class="ie lt-ie9"> <![endif]--> 
<!--[if gt IE 8]> <html class="ie"> <![endif]--> 
<html> 

, 당신은 사용할 수 있습니다

if ($('html.lt-ie9').size()) { 
    require(['/Scripts/ie'], function(ieScript) { 
     // ... do stuff 
    }); 
} 

당신은 require.js 외모 때문에 기술 한 방법을 사용할 수 없습니다 하나의 data-main 속성이 '진입 점'을 지정하려면 require에 대한 이후의 모든 호출이 자바 스크립트로 수행되어야합니다.

+0

대단히 감사합니다! 나는 이것의 변종을 사용하고 완벽하게 작동합니다 :-) – hcharge

관련 문제