2017-06-14 96 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的$