2013-01-09 44 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