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 /cache
em 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 addScript
método era mais 'baixo nível' do que o JHtml:script
mé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:script
eventualmente chame addScript
um objeto de documento em algum momento, mas outras etapas intermediárias são executadas primeiro?