2017-06-14 107 views
0

我需要能夠支持Internet Explorer 6-8中的所有CSS3僞類和屬性選擇器。稱爲selectivizr的polyfill允許您執行此操作。它需要一個JavaScript庫(如jquery或mootools)才能工作。問題是,雖然selectivizr支持所有的僞類和屬性選擇器與mootools,多達11個不識別或不支持jQuery。因此,雖然我從未在我的生活中使用過mootools,但我不得不將其作爲外部腳本與條件註釋中的selectivizr一起添加到我的網頁中,以檢測網頁是否已從Internet Explorer 6-8進行訪問。如何防止使用selectvizr的mootools和jquery之間的衝突?

像這樣:

<!--[if (gte IE 6)&(lte IE 8)]> 
    <script type="text/javascript" src="mootools-core.js"></script> 
    <script type="text/javascript" src="selectivizr.js"></script> 
    <noscript><link rel="stylesheet" href="[fallback css]" /></noscript> 
<![endif]--> 

的問題是,MooTools的和jQuery已經知道相互衝突。我的網頁上有很多jquery。編輯所有使用jQuery.noConflict()是不是一個真正的選擇也不是包裹它的所有

之間

(function ($) { 
    // $ is actually jQuery here 
    $(document).ready(function() { 

    }) 
}(jQuery)) 
另外,我不知道如果是這樣,但不止一個存在的JavaScript selectivizr用途庫可能會導致與selectivizr本身的功能有關的問題。我想我需要做的是添加一些mootools代碼到我的網頁,以防止它與jquery衝突,同時確保selectivizr沒有被jquery檢測到,並且只能夠響應mootools。但因爲我從來沒有使用過mootools,所以我不知道該怎麼做。誰能幫忙?

P.S我沒有Internet Explorer 6-8,所以我無法測試這個,所以請小心並負責,如果你給出答案。

+0

援引的另一種方式’?爲什麼'jQuery.noConflict()'不是一個真正的選擇? – Sergio

+0

我使用jQuery.noConflict()的內聯和外部代碼的形式在頭部和身體的頂部和底部以及中間有很多jquery,這意味着我必須花費數小時將$更改爲jQuery在很多地方代碼 –

+0

,我不想做 –

回答

1

如果其他東西已經定義了它,Mootools不會主張$。所以,如果你確保jQuery是MooTools的前加載$仍將是一個jQuery $

(即:保持了jQuery <script>標籤在<head>,並且不使用asyncdefer屬性)

這確實取決於使用的$document.id代替selectivzr本身 - document.id是Mootools的您是否正在使用Mootools的插件或你的唯一代碼Mootools的$