javascript - drupal_add_js 在 hook_user_login 中不起作用

标签 javascript drupal drupal-7

使用 Drupal 7,我在 hook_user_login 中使用 drupal_add_js 添加 js。

添加js后,我可以调用drupal_get_js(),我可以看到我的js已添加,但是当页面加载时,js已经消失了。

我的代码是:

function popups_user_login(&$edit, $account) {
    $js = 'some inline js here';
    drupal_add_js($js, array('type'=>'inline', 'weight'=>1));
    drupal_add_js(drupal_get_path('module', 'popups').'/popups.js', array('weight'=>2));
}

该模块的目的是在用户登录后如果满足某些条件,则创建一个弹出窗口。

drupal.org 上有类似的问题 just here .

谁能告诉我这是怎么回事?

(我已经在 2 个单独的 Drupal 7 安装上尝试过此操作,并且在两个站点上都遇到了相同的问题)

最佳答案

就像克莱夫所说,这是由于登录后直接发生的重定向。 可以通过安装 Devel 并在 Devel 设置页面上打开“显示重定向页面”来检查这一点。

解决方案是在 hook_user_login 中设置一个 session 变量(在我的例子中包含我想要显示的弹出窗口的 nid),然后可以在 hook_page_alter 中读取该变量并添加此时添加的必要 JS。

关于javascript - drupal_add_js 在 hook_user_login 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13458609/

相关文章:

javascript - 如何使用 map 将数组/嵌套数组组合到 div 中?

javascript - 尝试使用 JavaScript 将生成的文本发送到特定的 P 标签

php - 使用 Drupal 7 在 block 模板中获取节点 ID

autocomplete - Drupal 自动完成提交选择建议

javascript - NodeJS : How to check if a key exists in an array of JSON object

javascript - javascript-php json通信问题

php - 如何在drupal中记录错误消息

mysql - 为 Drupal 6 中每个定义的分类术语选择最新节点

docker - 更改 nginx - Docker 容器中的 client_max_body_size nginx.conf 调用包括 HTTP、服务器和位置部分;导入

php - 如何在 hook_form_alter 上添加权重