3

我在我的项目中使用 Require JS,它正在加载 jQuery 和其他一些与整个站点和所有浏览器相关的 JavaScript 文件。

但是,我需要在 Internet Explorer 7 和 8 上使用一些条件 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,但由于同样的问题而无法正常工作。

谢谢

4

1 回答 1

16

您可以在元素上使用条件 IE 特定类html,然后检查它并在现有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 中完成。

于 2012-08-07T13:13:32.610 回答