在我的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并确保在页面加载后运行它?
提前谢谢。
答案 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');
,而不是您要重定向的页面。