在drupal_goto之前使用drupal_add_js

时间:2011-08-01 08:54:28

标签: php javascript drupal drupal-6

在我的Drupal站点中,我需要将用户重定向到某个页面,然后在加载页面后执行som javascript代码(为了在页面顶部添加模式对话框)。在做了一些阅读之后,我在我的模块文件中尝试了这个:

drupal_add_js(drupal_get_path('module', 'mymodule') . '/scripts.js', 'module');
drupal_goto('path/to/redirect');

然后在我的javascript文件(scripts.js)中:

Drupal.behaviors.mymodule_behaviour = function (context) 
{
  // do some fancy stuff
};

这不起作用,因为运行drupal_goto时会从页面中删除javascript。有没有办法保存javascript并确保在页面加载后运行它?

提前谢谢。

2 个答案:

答案 0 :(得分:2)

为什么不在hook_menu中创建一个特殊路径来添加JS,然后从代码中的某个位置重定向到该路径,您知道需要添加JS。

你的hook_menu中有这样的东西:

$menu['path/to/redirect/JS'] = array(
 'page callback'  => 'my_callback',
 'page arguments' => array(TRUE), // this will pass TRUE as param 1 to the callback
);

$menu['path/to/redirect'] = array(
 'page callback'  => 'my_callback',
 'page arguments' => array(FALSE),
);

...

function my_callback($add_JS = FALSE) { // $add_JS will be set to TRUE
 if ($add_JS) {
    drupal_add_js(drupal_get_path('module', 'mymodule') . '/scripts.js', 'module');
 }
}

...

当你想要添加JS时:

drupal_goto( '路径/到/重定向/ JS');

这样你就不需要特殊的页面回调或GET变量,只需要一个看起来很干净的特殊路径。

答案 1 :(得分:1)

您需要在要重定向到的页面上包含drupal_add_js(drupal_get_path('module', 'mymodule') . '/scripts.js', 'module');,而不是您要重定向的页面。