使用drupal_add_js和['#attached']有什么区别


8

drupal_add_js()和之间有什么区别$form['#attached']['js'][]
何时使用以上每个功能?

(我的意思是我知道,如果在表单内部使用它,则使用它附加js来表示表单,但何时drupal_add_js使用以及何时$form['#attached']['js'][]使用?)

Answers:


9

如果要drupal_add_js()在表单构建功能中使用,那就是将JavaScript附加到页面上,仅此而已。

如果您正在使用$form['#attached']['js'],则其他模块可能会根据需要进行交互,测试和更改hook_form_alter()。这就是每次JavaScript在功能上与特定表单相关时都应选择的方式。

除此之外,它们在功能上是相同的。

请注意,使用JavaScript库通常比使用普通JavaScript文件更好,因为它们允许您声明版本,保持JS和CSS之间的关系,管理依赖关系,以及它们通常更强大。

当然,您应该$form['#attached']['library']在JavaScript库在功能上与特定表单相关drupal_add_library()时使用,并且仅在没有表单与库的功能有任何关系时才使用。


因此,要更改节点页面(node / [nid]),应使用drupal_add_js;对于node_form(node / add),应使用$ form ['#attached'] ['js'] ..我正确吗?
2013年

还有块呢?
2013年

@harshal是的。除非您在node / add上的JS与节点add表单无关,并且对不属于该表单的元素起作用。然后照常使用drupal_add_js。
Mołot

3
@harshal切勿放入drupal_add_js()模板文件,打开缓存/聚合时它将破坏文件
Clive

1
@Clive好吧,我同意使用裸JS上的库,我应该首先指出这一点。自从出现jQuery Multi问题以来,我就一直在使用它们。只是想确定我的答案是否完整并用尽了这个话题。
Mołot
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.