有没有办法检查一个特定的插件是否可用?

想象一下,您正在开发一个插件,该插件依赖于正在加载的另一个插件。

例如,我想让jQuery验证插件使用dateJS库来检查给定的日期是否有效。在jQuery验证插件中,如果dateJS可用,那么最好的检测方法是什么?


当前回答

jQuery有一个方法来检查某个东西是否是函数

if ($.isFunction($.fn.dateJS)) {
    //your code using the plugin
}

API参考:https://api.jquery.com/jQuery.isFunction/

其他回答

在您选择的浏览器控制台中运行此命令。

如果(jQuery) pluginName){控制台日志(“你好”);}

如果插件存在,它会在你的控制台打印出“bonjour”作为响应。

对于不使用fn命名空间的插件(例如pnotify),这是有效的:

if($.pluginname) {
    alert("plugin loaded");
} else {
    alert("plugin not loaded");
}

这行不通:

if($.fn.pluginname)

这种方法应该是有效的。

var plugin_exists = true;

try {
  // some code that requires that plugin here
} catch(err) {
  plugin_exists = false;
}

jQuery有一个方法来检查某个东西是否是函数

if ($.isFunction($.fn.dateJS)) {
    //your code using the plugin
}

API参考:https://api.jquery.com/jQuery.isFunction/

如果我们正在谈论一个合适的jQuery插件(一个扩展fn名称空间的插件),那么检测插件的正确方法是:

if(typeof $.fn.pluginname !== 'undefined') { ... }

或者因为每个插件几乎都保证有一些等于true的值,你可以使用更短的

if ($.fn.pluginname) { ... }

顺便说一句,$和jQuery是可以互换的,就像这个奇怪的插件包装器演示的那样:

(function($) {
    //
})(jQuery))

关闭

(function($) {
    //
})

紧随其后的是对闭包的调用“传递”jQuery作为参数

(jQuery)

闭包中的$被设置为jQuery