在我的自定义JS代码文件中,我使用各种插件,例如,JQuery的Masonry插件。但是,我没有在每个页面或主页文件级别包含插件(有些是,有些没有),但我确实在每个页面都包含我的自定义文件。因此,如果缺少Masonry插件,我的JS文件中的代码将发出错误。
如果有人可以回复解决方法:
我使用JQuery和JQuery UI,因为它们都在DOM结构(jquery和jquery.ui对象)中引入了一个类,但还有其他插件,如灯箱脚本,前面提到的Masonry等。
答案 0 :(得分:5)
我只是检查您所需要的功能是否可用(例如,如果您需要一个名为foo
的函数,而不是检查特定的JavaScript文件是否已被“包含”,而只是做一些事情。 typeof foo == 'undefined'
看看它是否存在......)。
答案 1 :(得分:3)
你要做的事情可能是一个坏主意,但无论如何,这里是如何确定是否定义了一个给定的插件。在jQuery中,它们只是namespaces to the jQuery scope:
if(!jQuery().somePlugin) {
// the plugin is not loaded => load it:
jQuery.getScript('/url_of_the_plugin', function() {
// the plugin is now loaded => use it
});
}
答案 2 :(得分:2)
在您的情况下,您只能检查其类或方法是否已定义:
if (typeof($.fn.masonry) == 'undefined') ...
无论如何,我建议在每个页面包含每个脚本,压缩成一个文件。下载和解析可能不需要的代码的成本通常远远低于多个HTTP请求的代价。