drupal_add_jsと['#attached']の違いは何ですか


8

違いは何であるdrupal_add_js()とは$form['#attached']['js'][]
上記の各機能を使用する目的はいつですか?

(つまり、フォームの内側で使用される場合、それが添付されたjsに使用されていることを知っていますが、いつdrupal_add_js使用され、いつ$form['#attached']['js'][]使用されますか?)

回答:


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がnode addフォームに関連しておらず、そのフォームに属していない要素で機能しない限り。次に、通常どおりdrupal_add_jsを使用します。
Mołot

3
@harshal drupal_add_js()テンプレートファイルに入れないでください。キャッシュ/集計がオンになっていると、問題が発生します
Clive

1
@Cliveええと、ネイキッドJS上のライブラリーについては同意します。そもそもそれを指摘しておく必要があります。私はjQuery Multiの問題以来、それらを使用しています。私の答えが完全であることを確認し、トピックを使い果たしたかっただけです。
Mołot
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.