有什么方法可以检查特定的插件是否可用?
假设您正在开发一个依赖于另一个正在加载的插件的插件。
例如,我希望jQuery Validation插件使用dateJS库来检查给定日期是否有效。如果dateJS可用,在jQuery Valdation插件中检测的最佳方法是什么?
有什么方法可以检查特定的插件是否可用?
假设您正在开发一个依赖于另一个正在加载的插件的插件。
例如,我希望jQuery Validation插件使用dateJS库来检查给定日期是否有效。如果dateJS可用,在jQuery Valdation插件中检测的最佳方法是什么?
Answers:
一般来说,jQuery插件是jQuery范围内的名称空间。您可以运行简单的检查以查看名称空间是否存在:
if(jQuery().pluginName) {
//run plugin dependent code
}
dateJs但是不是jQuery插件。它修改/扩展了javascript日期对象,并且没有添加为jQuery名称空间。您可以检查所需的方法是否存在,例如:
if(Date.today) {
//Use the dateJS today() method
}
但是您可能会遇到API与本机Date API重叠的问题。
if ($.isFunction(jQuery.fn.pluginName)) { ... }
也将确保它至少是一个功能。
window.jQuery
未设置名称空间(即未设置回调),它都不会运行,它可以正常工作,但现在正在加载aj查询插件并进行检查,我需要调用jquery select function like jQuery().pluginName
,但是当我通过它时,我的功能参数如LoadScript("jquery+plugin.js",jquery().plugin)
jquery()尚不存在
如果我们在谈论一个适当的jQuery插件(扩展了fn名称空间的jQuery插件),那么检测该插件的正确方法是:
if(typeof $.fn.pluginname !== 'undefined') { ... }
或者因为几乎每个插件都可以保证其值等于true,所以您可以使用较短的
if ($.fn.pluginname) { ... }
顺便说一句,$和jQuery是可互换的,如插件周围的奇怪包装说明:
(function($) {
//
})(jQuery))
封闭
(function($) {
//
})
紧随其后的是对该闭包的“传递” 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有一种检查某物是否为函数的方法
if ($.isFunction($.fn.dateJS)) {
//your code using the plugin
}
我强烈建议您将DateJS库与插件捆绑在一起,并记录已完成的事实。没有比寻找依赖更令人沮丧的了。
就是说,出于法律原因,您可能无法总是捆绑所有东西。谨慎并使用Eran Galperin的答案检查插件是否存在也无济于事。
在您选择的浏览器控制台中运行此命令。
if(jQuery().pluginName){console.log('bonjour');}
如果存在该插件,它将在控制台中输出“ bonjour”作为响应。