如何检查某个JS文件是否包含在网页中?

时间:2011-07-10 20:20:30

标签: javascript jquery conditional

在我的自定义JS代码文件中,我使用各种插件,例如,JQuery的Masonry插件。但是,我没有在每个页面或主页文件级别包含插件(有些是,有些没有),但我确实在每个页面都包含我的自定义文件。因此,如果缺少Masonry插件,我的JS文件中的代码将发出错误。

如果有人可以回复解决方法:

  1. 检查某个JS插件是否被引用(包含),然后只运行代码,
  2. (可选)如果文件丢失,则在运行时包含该文件。
  3. 我使用JQuery和JQuery UI,因为它们都在DOM结构(jquery和jquery.ui对象)中引入了一个类,但还有其他插件,如灯箱脚本,前面提到的Masonry等。

3 个答案:

答案 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请求的代价。