Есть ли способ проверить, доступен ли конкретный плагин?
Представьте, что вы разрабатываете плагин, который зависит от загружаемого другого плагина.
Например, я хочу, чтобы плагин проверки jQuery использовал библиотеку dateJS, чтобы проверить, является ли данная дата действительной. Как лучше всего определить в плагине jQuery Valdation, доступна ли dateJS?
jquery
jquery-plugins
Витор Сильва
источник
источник
Ответы:
Вообще говоря, плагины jQuery - это пространства имен в области jQuery. Вы можете запустить простую проверку, чтобы увидеть, существует ли пространство имен:
dateJs, однако, не является плагином jQuery. Он изменяет / расширяет объект даты javascript и не добавляется как пространство имен jQuery. Вы можете проверить, существует ли нужный вам метод, например:
Но вы можете столкнуться с проблемами, когда API перекрывает собственный API Date.
источник
if ($.isFunction(jQuery.fn.pluginName)) { ... }
также будет гарантировать, что это по крайней мере функция.window.jQuery
не установлено, обратный вызов не будет работать, он работает нормально, но теперь загрузите плагин запроса aj и проверьте, что мне нужно вызвать функцию выбора jqueryjQuery().pluginName
, но когда я передаю его, мой параметр функции, например,LoadScript("jquery+plugin.js",jquery().plugin)
jquery (), дозы еще не существуетЕсли мы говорим о правильном плагине jQuery (который расширяет пространство имен fn), то правильный способ обнаружить плагин:
Или потому что каждый плагин в значительной степени имеет определенное значение, равное true, вы можете использовать более короткий
Кстати, $ и jQuery взаимозаменяемы, как странно выглядит оболочка вокруг плагина демонстрирует:
закрытие
немедленно сопровождается вызовом к этому закрытию, передавая jQuery в качестве параметра
$ в замыкании устанавливается равным jQuery
источник
function isPluginLoaded(plugin) { return !!$.fn[plugin] }
if(typeof $.fn.pluginname != 'undefined')
$
иjQuery
не всегда взаимозаменяемы, так как jQuery может (например, в WordPress) загружаться в бесконфликтном режиме . Это заставило меня всегда использовать сокращенный, готовый к конфликту документ,jQuery(function($) { // $ is safe in here.... });
или, как вы указали, шаблон закрытия: в(function($) { // $ is safe in here.... })(jQuery);
зависимости от моего настроения / потребности. (Кстати, голосование одобрено, так как чек, который вы рекомендуете, - тот, который я предпочитаю)Для обнаружения плагинов jQuery я нашел более точным использование скобок:
источник
для плагинов, которые не используют пространство имен fn (например, pnotify), это работает:
Это не работает:
источник
У jQuery есть метод, чтобы проверить, является ли что-то функцией
Справочник по API: https://api.jquery.com/jQuery.isFunction/
источник
Я настоятельно рекомендую вам связать библиотеку DateJS с вашим плагином и задокументировать тот факт, что вы это сделали. Нет ничего более расстраивающего, чем выслеживание зависимостей.
Тем не менее, по юридическим причинам, вы не всегда можете объединить все. Также никогда не повредит быть осторожным и проверять наличие плагина, используя ответ Эрана Гальперина .
источник
Запустите это в выбранной вами консоли браузера.
if(jQuery().pluginName){console.log('bonjour');}
Если плагин существует, он выведет «bonjour» в качестве ответа в вашей консоли.
источник
Такой подход должен работать.
источник