Desenvolvi recentemente um módulo que exigia a injeção de certos arquivos JS e CSS no <head>de cada página. Inicialmente, usei:
$doc =& JFactory::getDocument();
$doc->addScript(JURI::base(true).'/modules/mod_x/js/mod_x.js');
No entanto, notei que, quando o armazenamento em cache estava ativado, o site carregava uma versão em cache e uma versão /cacheem cache /modules/mod_x/js/, causando erros de JS.
Quando mudei isso para:
JHtml::script(Juri::base().'modules/mod_x/js/mod_x.js');
O script foi carregado apenas uma vez, do cache, resolvendo esses erros.
Eu li nos documentos que o addScriptmétodo era mais 'baixo nível' do que o JHtml:scriptmétodo, mas além de dizer que ...
Obviamente, você também precisará codificar manualmente algumas das etapas [que JHtml: script faz por você] que seriam executadas automaticamente usando o [método JHtml: script] acima [se você usar o addScript].
... nenhum detalhe adicional é fornecido.
Então qual a diferença? Suponho que JHtml:scripteventualmente chame addScriptum objeto de documento em algum momento, mas outras etapas intermediárias são executadas primeiro?