qual è la differenza tra l'utilizzo di drupal_add_js e ['#attached']


8

Qual è la differenza tra drupal_add_js()e $form['#attached']['js'][]?
Quando è lo scopo di utilizzare ciascuna delle funzioni di cui sopra?

(Voglio dire, so che è usato per attaccare js per dire forma se usato dentro forma ma quando viene drupal_add_jsusato e quando viene $form['#attached']['js'][]usato?)

Risposte:


9

Se stai usando la drupal_add_js()tua funzione di costruzione del modulo, stai allegando JavaScript a una pagina e il gioco è fatto.

Se si sta utilizzando $form['#attached']['js'], altri moduli potrebbero interagire, testare e modificarlo secondo le proprie necessità, utilizzando hook_form_alter(). Questo è il modo in cui dovresti scegliere ogni volta che il tuo JavaScript è funzionalmente correlato a un particolare modulo.

Oltre a ciò, sono funzionalmente uguali.

Nota che di solito è meglio usare le librerie JavaScript piuttosto che semplici file JavaScript, poiché ti consentono di dichiarare le versioni, mantenere relazioni tra JS e CSS, gestire le dipendenze, beh, sono generalmente molto più potenti.

Ovviamente, dovresti usarlo $form['#attached']['library']quando la tua libreria JavaScript è funzionalmente correlata a un particolare modulo e usare solo drupal_add_library()quando nessun modulo è in alcun modo correlato alla funzione della libreria.


Quindi per modificare la pagina del nodo (nodo / [nid]) si dovrebbe usare drupal_add_js e per node_form (nodo / aggiungere) si dovrebbe usare $ form ['# allegato'] ['js'] .. Sto bene?
harshal,

E i blocchi?
harshal,

@harshal Sì. A meno che il tuo JS sul nodo / aggiungi non sia correlato a un modulo di aggiunta nodo e funzioni su elementi che non appartengono a quel modulo. Quindi usa drupal_add_js come al solito.
Mołot,

3
@harshal Non inserire mai drupal_add_js()un file modello, interromperà le cose quando viene attivata la memorizzazione nella cache / aggregazione
Clive

1
@Clive Bene, con le biblioteche su JS nudo sono d'accordo, e dovrei farlo notare in primo luogo. Li sto usando dai miei problemi con jQuery Multi. Volevo solo essere sicuro che la mia risposta fosse completa e esaurire l'argomento.
Mołot,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.