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