0

有没有人有让 Selectivizr 与 IE7/8 和 RequireJS 一起工作的经验?

我已经尝试像往常一样添加条件注释,我之前没有遇到过这个问题,我正在运行本地主机。

我认为这与需要在 Selectivizr 之前运行的 jQuery 有关,RequireJS 似乎使事情复杂化了。

任何帮助都会很棒,干杯。

4

2 回答 2

3

由于某种原因 yepnope 方法不起作用,它仍然会加载 selectivizr 作为第一个脚本,甚至在modernizr 之前,这一定与 yepnope 工作的异步方式有关。

在我的情况下,我解决这个问题的方法是在我的 html 标记之前添加一个条件注释

<!--[if (gte IE 6)&(lte IE 8)]><html class="lt-ie9"><![endif]-->

然后我得到了一个单独的“ie-tidy.js”,我从 require js 中调用它。所以我的配置看起来像这样(这被修剪了)

requirejs.config({

paths: {
    jquery: "../jquery-1.7.2.min",
    app: ".",
    selectivizr: '../selectivizr-min'
},
"shim": {
    "cookie": ["jquery"],
    "selectivizr": ["jquery"]
}
});
requirejs(['jquery', 'app/header', 'app/ie-tidy'], function ($) {
});

然后在我的 ie-tidy.js 中执行以下操作(在其他特定于 ie 的脚本中)

define(['jquery'], function ($) {
"use strict"

$(function() {
    if ($('html.lt-ie9').size()) {
           require(['jquery', 'selectivizr']);
        }
    });
});

这完全符合我的要求,在 jQuery 之后加载 selectivizr 并按预期应用 selectivizr 类。感谢您的帮助@Dzulqarnain

于 2012-08-10T08:40:05.437 回答
0

根据 Selectivizr 网站,您确实需要指定位于首页的表中定义的库之一。

在定义 jQuery 之后,您总是可以使用 YepNope 或类似的东西加载 Selectivizr。

例如。

require.config({
    shim: {
        'yepnope' : {
            exports: 'yepnope'
        }
    },

    paths: {
        'jquery' : 'jquery-min',
        'yepnope' : 'yepnope-min'
    }
});

require(['jquery', 'yepnope'], function($){
    yepnope({
        load: ['iegt5!ielt9!selectivizr-min.js']
    });

    // do other stuff
});
于 2012-08-09T11:12:54.740 回答