Answers:
如果您希望将JS和CSS添加到特定的节点编辑页面(或通常以任何形式),最好的和正确的位置是hook_form_alter(),而您应该使用的属性是#after_build。
对DO的评论完全告诉您该怎么做-http://drupal.org/node/1253520#comment-4881588
希望这可以帮助 :-)
#attached
几乎在任何情况下都建议使用。此外,drupal_add_js / CSS将在Drupal 8.弃用
您应该使用#attached属性来确保始终正确地将JS / CSS与另一个render元素一起加载。
#attached
,也许还有一些有关您要避免的问题的其他信息。
我感到这些答案和评论非常需要示例代码,尤其是@AyeshK和@Letharion的示例代码。此评论太长,请原谅。如果对您有用,请对Sumeet或Letharion的答案进行投票。另外,以下示例显然添加了CSS,但添加JavaScript几乎相同。
使用@Sumeet的答案,但使用#attached
属性而不是drupal_add_css
,则如下所示:
/* Implements hook_form_FORM_ID_alter() */
function MY_MODULE_form_MY_FORM_ID_alter(&$form, &$form_state, $form_id) {
$form['#after_build'][] = 'MY_MODULE_some_function_name_after_build';
}
function MY_MODULE_some_function_name_after_build($form, &$form_state) {
$style_path = drupal_get_path('module','MY_MODULE') . '/css/my_css.css';
// drupal_add_css('file', $style_path);
$form['#attached']['css'][] = $style_path;
return $form;
}
最后,drupal_add_css
可以在这篇文章中找到弃用的内容。对于许多对drupal_add_xxx来说工作正常的人来说,这可能是个新闻,对我而言。
#after_build
我所知,这是胡说八道,应将其删除。(在提供#after_build
解决方案的答案上也有类似的评论)我认为这本身就解释了为什么我的简短答案很好。如果简单地看一下我提供的链接,您会找到相同的代码,但是没有不必要的地方。