Подтвердить что ты не робот

Как определить, какая библиотека находится за функцией $?

Я разрабатываю JavaScript, который должен работать с Prototype.js или JQuery, поэтому мне нужно каким-то образом определить, какая основная библиотека используется. Как я могу это сделать?

4b9b3361

Ответ 1

Вы можете проверить jQuery следующим образом:

if (window.$ === window.jQuery)

Ответ 2

Ну, вы можете проверить наличие jQuery:

if(window.jQuery !== "undefined")
{
    // jQuery Yay!
}

а затем, если ему присвоено значение $

if(window.jQuery === window.$)
{
    // jQuery Yay!
}

Ответ 3

Может ли jQuery noconflict помочь? Затем вы можете использовать jQuery для jQuery и $ для прототипа.

Ответ 4

@SLaks и @Chacha102 подходят для обнаружения jQuery, но если вы хотите убедиться, что если функция $ не из jQuery, из PrototypeJS, вы можете:

​if (typeof  $ == 'function'​​) {
  if ($.fn && $.fn.jquery) { // $.fn.jquery contains the version number
    // jquery
  } else if (window.Prototype && Prototype.Version) {
   // prototype
  }
}​

Ответ 5

Запишите его без зависимости от какой-либо библиотеки, и она должна отлично работать как с jQuery, так и с Prototype;)

Серьезно, не является ли одним из основных пунктов этой библиотеки, чтобы избежать необходимости писать три разных варианта каждой строки кода для каждого браузера? Написание кода, чтобы попытаться удовлетворить несколько библиотек, кажется довольно глупым.

В любом случае, глядя на документацию для библиотеки в течение примерно 5 секунд, вы должны дать вам подсказку о том, какие свойства jq $будут иметь, что pt $не будет. Это говорит о том, что вы на самом деле не потрудились посмотреть на различия между структурами (что, очевидно, будет лучшим способом рассказать им обо всем, верно?). Вы уверены, что знаете, к чему вы попали?

Как уже говорилось,

var whosThatDollarSign = typeof window.$=='undefined' ? 'none' : (window.$==window.jQuery ? 'jQuery' : 'not jQuery')

Ответ 6

Я разрабатываю JavaScript, который должен работать с Prototype.js или JQuery, поэтому мне нужно каким-то образом определить, какая основная библиотека используется. Как я могу это сделать?

Ваш вопрос неоднозначен, для меня есть два очевидных значения, поэтому я отвечу обоим.

Если вы хотите, чтобы вы писали код, который будет работать независимо от использования jQuery или Prototype.js, ответ заключается в том, что написать код, который работает независимо от библиотек, которые были или будут, загружен. Поэтому нет необходимости открывать, какой из них был использован.

Если вы имеете в виду, что вы собираетесь написать два отдельных сценария, один для jQuery и один для Prototype.js, то в зависимости от того, какой из них вы "обнаружите", вы загрузите один script или другой, затем вы основываете свой код на очень плохой архитектуре. Ни одна из этих библиотек не поддерживает особенно широкий выбор браузеров, и оба они нуждаются в обновлении всякий раз, когда выйдет новая версия, даже из "популярных", которые они поддерживают.

Попытка поддержать использование отдельных сценариев создаст постоянную головную болью - два раза. Или, возможно, это ваше намерение.

-

Роб