有没有人有让 Selectivizr 与 IE7/8 和 RequireJS 一起工作的经验?
我已经尝试像往常一样添加条件注释,我之前没有遇到过这个问题,我正在运行本地主机。
我认为这与需要在 Selectivizr 之前运行的 jQuery 有关,RequireJS 似乎使事情复杂化了。
任何帮助都会很棒,干杯。
有没有人有让 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”,我从 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
根据 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
});