2011-07-10 71 views
3

在我的自定義JS代碼文件中,我使用了各種插件,例如JQuery的Masonry插件。但是,我不在每個頁面或主頁面文件級別都包含插件(有些是,有些則沒有),但是我在每個頁面上都包含了自定義文件。因此,如果缺少Masonry插件,我的JS文件中的代碼將發出錯誤。如何檢查某個JS文件是否包含在網頁中?

如果有人能與溶液答覆如何:

  1. 檢查,如果某些JS插件是引用(含),只有運行代碼,然後,
  2. (可選),包括在運行時,如果該文件它缺失。

我有它使用jQuery和JQuery UI工作,因爲它們都引入到類DOM structu(jQuery和jquery.ui對象),但也有其他插件的類似收藏夾的腳本中,forementioned砌體等。

回答

5

而不是檢查是否一個特定的JavaScript文件已經「列入」,我只是檢查,如果你需要一個名爲foo功能,你需要的功能可用(即,只需沿着typeof foo == 'undefined'的方向行事,看看它是否存在......)。

+0

接受這一個,因爲它更通用,即測試其他腳本與jQuery沒有連接 – mare

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

如果類或方法的定義,在您的情況您只能檢查:

if (typeof($.fn.masonry) == 'undefined') ... 

無論如何,我會建議,包括在每個頁面每個腳本,壓縮成一個文件。下載和解析可能不需要的代碼的代價通常遠低於多個HTTP請求的代價。

相關問題