Di recente ho sviluppato un modulo che richiede l'iniezione di alcuni file JS e CSS in <head>
ciascuna pagina. Inizialmente, ho usato:
$doc =& JFactory::getDocument();
$doc->addScript(JURI::base(true).'/modules/mod_x/js/mod_x.js');
Tuttavia, ho notato che quando è stata abilitata la memorizzazione nella cache, il sito ha caricato sia una versione cache che una versione /cache
non cache /modules/mod_x/js/
, causando errori JS.
Quando l'ho cambiato in:
JHtml::script(Juri::base().'modules/mod_x/js/mod_x.js');
Lo script è stato caricato una sola volta, dalla cache, risolvendo questi errori.
Ho letto nei documenti che il addScript
metodo era più "basso livello" rispetto al JHtml:script
metodo, ma oltre a dire che ...
Ovviamente, dovrai anche codificare manualmente alcuni dei passaggi [che JHtml: script fa per te] che verrebbero eseguiti automaticamente usando il [JHtml: metodo di script] sopra [se usi addScript].
... non vengono forniti ulteriori dettagli.
Quindi qual è la differenza? Presumo che JHtml:script
alla fine invoca addScript
un oggetto documento a un certo punto, ma vengono intrapresi prima altri passaggi intermedi?