2012-08-07 61 views
3

我在我的项目中使用了要求JS,它是加载jQuery和一些其他与整个网站和所有浏览器相关的JavaScript文件。使用条件注释与RequireJS只加载IE7/8 jQuery

但是,我需要在Internet Explorer 7上使用一些有条件的jQuery 8 & 8,我试过把它放在页面的头部,脚本似乎无法找到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

您可以在html元素使用条件IE特有的类,然后为它检查和装载您现有main脚本中的IE浏览器的依赖。因此,该文件的顶部看起来像:

<!--[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> 

然后里面main.js,你可以使用:

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

你不能使用你因为长相require.js描述的方法对于单个data-main属性来指定'入口点' - 任何后续调用require都应该在Javascript中完成。

+0

非常感谢!我已经使用了这个变种,它完美的作品:-) – hcharge 2012-08-07 13:28:26