我需要能够在 Internet Explorer 6-8 中支持所有 CSS3 伪类和属性选择器。称为 selectivizr 的填充代码允许您执行此操作。它需要一个JavaScript库,如jquery或mootools才能工作。问题在于,虽然 selectivizr 使用 mootools 支持所有伪类和属性选择器,但其中多达 11 个要么无法识别,要么不支持 jquery。因此,尽管我一生中从未使用过mootools,但我被迫将其作为外部脚本添加到我的网页中,并在条件注释中与selectivizr一起检测该网页是否已从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))
另外,我不知道是否如此,但是Selectivizr使用的多个javascript库的存在可能会导致selectivizr本身的功能出现问题。我认为我需要做的是在我的网页中添加一些mootools代码,以防止它与jquery冲突,同时确保jquery不会检测到selectivizr,并且只能响应mootools。但是由于我从未使用过mootools,我不知道该怎么做。谁能帮忙?
附言我没有Internet Explorer 6-8,所以我无法对此进行测试,所以如果您给出答案,请小心并负责任。
如果其他东西已经定义了它,Mootools不会声称$
。因此,如果你确保jQuery在Mootools之前加载,那么$
仍然是jQuery$
(即:将 jQuery<script>
标签保留在<head>
中,不要使用async
或defer
属性)
这确实取决于 selectivzr 本身使用document.id
而不是$
-document.id
Mootools 调用"Mootools$
"的替代方式