将 Selectivizr 与 RequireJS (jQuery) 结合使用



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

我尝试像往常一样添加条件注释,我以前没有问题,我正在运行本地主机。

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

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

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

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

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

然后我有一个单独的"ie-tidy.js",我从requires调用。 所以我的配置看起来像这样(这被修剪了)

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

根据 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
});

相关内容

  • 没有找到相关文章

最新更新