2013-01-09 153 views
2

在我的Drupal 7安裝中,我有2個獨立的JavaScript文件,通過我的子主題(base和admin sub-theme)加載 - 我不知道這是否是有用的信息,但是:Drupal 7全局JavaScript變量

如果我想在加載的第一個js文件中定義一個JavaScript變量並在第二個js文件中使用它,該怎麼辦?我應該如何定義它?

基本上,問題可能是:如何在Drupal環境中定義全局JavaScript變量?

我正在使用jQuery。

在此先感謝!

編輯:

首先js文件:

var myOwnVar; 

(function ($) { 
    $(document).ready(function() { 
     myOwnVar = 1; 
    }); 
}(jQuery)); 

二js文件:

(function ($) { 
    $(document).ready(function() { 
     console.log(myOwnVar); 
    }); 
}(jQuery)); 
+1

向我們展示一些代碼... –

+0

沒有ü找到答這個問題,我有同樣的問題 – Hitesh

回答

4

你想用Drupal.settings。

這些值可以通過JavaScript函數全局訪問。

你可以從你的PHP JS傳遞變量...

drupal_add_js(array('YOURMODULE' => array('SOMEVARIABLE' => 'woohoo')), 'setting'); 

然後訪問您的JS函數變量...

(function ($) { 
    Drupal.behaviors.YOURMODULE = { 
    attach: function (context, settings) { 

     // You can access the variable by using Drupal.settings.SOMEVARIABLE 
     alert(Drupal.settings.YOURMODULE.SOMEVARIABLE); 

    } 
    }; 
})(jQuery); 

請參考http://drupal.org/node/172169#variablesandarrays

「變量不應該在全局範圍內定義,可以不惜一切代價在本地函數範圍內定義變量,所有變量都應該在開始時聲明ning的功能。「

或者,任何關閉的以下外部都可以工作,但應該避免。

var SOMEVARIABLE = SOMEVALUE; 

(function ($) { 
    Drupal.behaviors.YOURMODULE = { 
+1

我玩,現在與Drupal.settings - 但是這仍然沒有回答我的問題。我想在JavaScript中設置一個全局變量,並在JavaScript中獲取它。不通過PHP。 – MrUpsidown

+0

這是'Drupal方式',否則請參考上面的註釋。 –

+0

我不相信沒有簡單的方法來做到這一點,而不使用PHP。沒有辦法從JS設置Drupal.settings嗎? – MrUpsidown