0

有没有人有任何获得Selectivizr与IE7/8和RequireJS一起使用的经验?使用Selectivizr与RequireJS(jQuery)

我已经尝试按照惯例添加条件注释,我以前没有任何问题,我正在使用本地主机。

我认为这与jQuery需要在Selectivizr之前运行有关,这是RequireJS似乎复杂化的一部分。

任何帮助将是伟大的,欢呼声。

回答

3

出于某种原因,yepnope方法不起作用,它仍然会加载selectivizr作为第一个脚本,甚至Modernizr的前,这必须是与yepnope工作在异步方式。

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

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

我再有一个独立的“即,tidy.js”这是我从需要调用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我这样做(在其他特定即脚本)

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

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

这正是工作我希望如何,在jQuery之后加载selectivizr并按预期应用selectivizr类。感谢您的帮助@Dzulqarnain

+0

感谢你的工作,就像一个魅力。 – befletcher 2013-06-29 15:35:18

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 
}); 
+0

嗯,这似乎像它应该工作,但是它的一切之前仍在加载selectivizr,它也给它的属性的onload =“空” – hcharge 2012-08-09 13:09:51

+0

我认为这是它是如何工作的?如果你需要它加载DOM准备好,你可以使用jQuery的.ready()方法。 – 2012-08-09 15:00:24

+0

我已经将它包装在$(function()中,它仍然在做它,它肯定需要在jQuery之后加载,我认为我很接近,谢谢你的帮助 – hcharge 2012-08-09 15:50:18