Как предотвратить конфликт между mootools и jquery для использования selectvizr?
Мне нужно иметь возможность поддерживать все псевдоклассы CSS3 и селекторы атрибутов в Internet Explorer 6-8. Полифилл, называемый 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))
Кроме того, я не знаю, так ли это, но наличие более чем одной библиотеки javascript, которую использует selectivizr, может вызвать проблемы с функциональностью самого selectivizr. Я думаю, что мне нужно сделать, это добавить код mootools на мою веб-страницу, чтобы он не конфликтовал с jquery, и в то же время убедиться, что selectivizr не обнаруживается jquery и может отвечать только на mootools. Но так как я никогда не использовал mootools, я не знаю, как это сделать. Кто-нибудь может помочь?
PS У меня нет Internet Explorer 6-8, поэтому я не могу проверить это, поэтому, пожалуйста, будьте осторожны и ответственно, если вы дадите ответ.
1 ответ
Mootools не требует $
если что-то еще уже определило это. Так что если вы убедитесь, что JQuery загружен до Mootools $
все еще будет JQuery $
(т.е. сохранить JQuery <script>
тег в <head>
и не используйте async
или же defer
атрибуты)
Это зависит от самого selectivzr с помощью document.id
вместо $
- document.id
это Mootools альтернативный способ вызова "Mootools $
'