有没有人有让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
});