2012-08-06 26 views
1

我必須包含一個外部JavaScript文件作爲我正在處理的Drupal項目的一部分。 不幸的是,這個外部文件沒有作出正確使用閉包,例如:包括不尊重封閉使用的外部JavaScript

(function($) { 
    function test() {...} 
})(jQuery); 
function test2() { 
    console.log($('#xyz').val()); 
} 

這導致了「$未定義」每當執行測試2()錯誤。

我知道Drupal明智地使用閉包來允許庫的和諧共存,這非常有用,但在這種情況下,讓團隊對所述外部JS文件負責進行必要的更改將是一場噩夢(並且還會涉及向負責解釋的「專家」)。

有沒有什麼辦法可以讓這個外部文件訪問使用$作爲指向jQuery的指針? 理想情況下,我想要一些解決方案,在我的結尾不涉及巨大的解決方法,但仍可以使用外部版本。

如果沒有,我只需要一個本地副本,並相應地修復。

謝謝!

回答

3

只需指定一個全局。

window.$ = jQuery 
+0

我希望它會是一些這樣簡單的事情。謝謝! – 2012-08-06 14:57:34

1

你要麼需要,如果你指出的JavaScript src複製到本地PHP文件採取複製和修改,以適合,或使用PHP來獲取文件和輸出它,例如,在PHP文件你可以不喜歡

$js = file_get_contents("externaljsfile"); 

echo ";(function($) {"; 

echo $js; 

echo "})(jQuery);"; 

有一種方法,我聽到的,採用進口的javascript這可能工作(JavaScript的宏的?),但是我從來沒有對他們讀了(如果他們甚至存在)和他們不會支持足夠的瀏覽器無論如何是一個可行的解決方案

+0

尼斯遲到的評論,但..實際上使用到最後非常相似的東西 - 謝謝! – 2013-07-26 08:48:45