我需要能够支持Internet Explorer 6-8中的所有CSS3伪类和属性选择器。名为selectivizr的polyfill允许你这样做。它需要一个javascript库,如jquery或mootools才能工作。问题是,虽然selectivizr支持所有带有mootools的伪类和属性选择器,但是jquery中有多达11个被识别或不支持。因此,虽然我从未在生活中使用过mootools,但我不得不将其作为外部脚本添加到我的网页中,并在条件注释中选择检测网页是否已从Internet Explorer 6-8访问过。
像这样:
<!--[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库的存在可能会导致选择器本身的功能出现问题。我认为我需要做的是在我的网页上添加一些mootools代码,以防止它与jquery发生冲突,同时确保jquery没有检测到selectivizr并且只能响应mootools。但由于我从未使用过mootools,我不知道该怎么做。有人可以帮忙吗?
P.S我没有Internet Explorer 6-8所以我无法对此进行测试,所以如果你给出答案,请小心并负责。
答案 0 :(得分:1)
如果其他人已经定义了Mootools,则Mootools不会声明$
。因此,如果确保在Mootools之前加载jQuery,$
仍然是jQuery $
(即:将jquery <script>
标记保留在<head>
中,并且不要使用async
或defer
属性
这取决于selectivzr本身使用document.id
而不是$
- document.id
是Mootools&#39;调用&#39; Mootools $
&#39;