Как предотвратить конфликт между 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 $'

Другие вопросы по тегам