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 /cachenon 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 addScriptmetodo era più "basso livello" rispetto al JHtml:scriptmetodo, 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:scriptalla fine invoca addScriptun oggetto documento a un certo punto, ma vengono intrapresi prima altri passaggi intermedi?