apa perbedaan antara menggunakan drupal_add_js dan ['#attached']

8

Apa perbedaan antara drupal_add_js()dan $form['#attached']['js'][]?
Kapan tujuan menggunakan masing-masing fungsi di atas?

(Maksud saya, saya tahu bahwa ini digunakan untuk melampirkan js untuk mengatakan formulir jika digunakan di dalam formulir tetapi kapan drupal_add_jsdigunakan dan kapan $form['#attached']['js'][]digunakan?)

harshal
sumber

Jawaban:

9

Jika Anda menggunakan drupal_add_js()dalam fungsi membangun formulir Anda, Anda melampirkan JavaScript ke halaman, dan hanya itu.

Jika Anda menggunakan $form['#attached']['js'], modul lain dapat berinteraksi, menguji dan mengubahnya sesuai kebutuhan, menggunakan hook_form_alter(). Itulah cara Anda harus memilih setiap kali JavaScript Anda secara fungsional terkait dengan formulir tertentu.

Selain itu, mereka secara fungsional sama.

Perhatikan bahwa biasanya lebih baik menggunakan pustaka JavaScript daripada file JavaScript biasa, karena memungkinkan Anda untuk mendeklarasikan versi, menjaga hubungan antara JS dan CSS, mengelola dependensi, yah, mereka umumnya jauh lebih kuat.

Tentu saja Anda harus menggunakannya $form['#attached']['library']ketika Perpustakaan JavaScript Anda secara fungsional terkait dengan formulir tertentu, dan hanya digunakan drupal_add_library()ketika tidak ada bentuk yang terkait dengan fungsi perpustakaan.

Mołot
sumber
Jadi untuk mengubah halaman node (node ​​/ [nid]) kita harus menggunakan drupal_add_js dan untuk node_form (node ​​/ add) kita harus menggunakan $ form ['# lampiran'] ['js'] .. Apakah saya benar?
harshal
Juga bagaimana dengan balok?
harshal
@harshal Ya. Kecuali jika JS Anda pada node / add tidak terkait dengan node add form dan bekerja pada elemen yang bukan milik form itu. Kemudian gunakan drupal_add_js seperti biasa.
Mołot
3
@harshal Jangan pernah memasukkan drupal_add_js()file template, itu akan merusak hal-hal ketika caching / agregasi dihidupkan
Clive
1
@Clive Yah, dengan perpustakaan lebih dari JS telanjang, saya setuju, dan saya harus menunjukkannya di tempat pertama. Saya menggunakan mereka karena masalah saya dengan jQuery Multi. Hanya ingin memastikan jawaban saya lengkap dan menguras topik.
Mołot