如何在Drupal 7中全局使用javascript函数

时间:2014-05-21 00:57:11

标签: javascript jquery drupal drupal-7

如何在Drupal 7中全局使用javascript函数。

我的javascript文件设置如下,并使用drupal_add_js()添加:

(function($) {
  function add_if_country_is_not_usa() {
   // Check what country it is

   // Update text, image, etc.. of a block.
  }
});

在我的块WYSIWIG中,我添加了以下代码(我在WYSIWIG中添加它的原因是因为我想在页面完全呈现之前更新它):

<script type="text/javascript">
  add_if_country_is_not_usa();
</script>

但是我收到以下错误: 未捕获的ReferenceError:未定义add_if_country_is_not_usa (匿名函数)

我读过有关向Drupal行为添加函数的内容,但这些内容在文档就绪时发生。我想在显示块后立即运行该函数。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

在全局范围内定义,或者如下所示:

(function($) {
  function add_if_country_is_not_usa() {
   // Check what country it is

   // Update text, image, etc.. of a block.
  }

  // set as a property of the global object `window`
  window.add_if_country_is_not_usa = add_if_country_is_not_usa;
});

答案 1 :(得分:0)

不确定这是否是最佳方式,但我最终能够使用命名空间使其工作。我从我的块中调用myGlobalObject.add_if_country_is_not_usa()并且它现在可以正常工作。

var myGlobalObject = mySingleGlobalObject || { 'country': {} };

(function ($) {
   myGlobalObject.country = '';

   myGlobalObject.add_if_country_is_not_usa = function() {      
     // Check what country it is

     // myGlobalObject.country = 'US';
   }
})(jQuery);