J'ai récemment développé un module qui exigeait que certains fichiers JS et CSS soient injectés dans la <head>page de chaque page. Au départ, j'ai utilisé:
$doc =& JFactory::getDocument();
$doc->addScript(JURI::base(true).'/modules/mod_x/js/mod_x.js');
Cependant, j'ai remarqué que lorsque la mise en cache était activée, le site chargeait à la fois une version mise en cache et une version /cachenon mise en cache /modules/mod_x/js/, provoquant des erreurs JS.
Quand j'ai changé cela en:
JHtml::script(Juri::base().'modules/mod_x/js/mod_x.js');
Le script n'a été chargé qu'une seule fois, à partir du cache, résolvant ces erreurs.
J'ai lu dans la documentation que la addScriptméthode était plus «bas niveau» que la JHtml:scriptméthode, mais au-delà de dire que ...
Bien sûr, vous devrez également coder manuellement certaines des étapes [que JHtml: script fait pour vous] qui seraient effectuées automatiquement en utilisant la [méthode JHtml: script] ci-dessus [si vous utilisez addScript].
... aucun autre détail n'est donné.
Alors quelle est la différence? Je suppose que JHtml:scriptfinalement, addScriptà un moment donné, un objet document est appelé , mais d'autres étapes intermédiaires sont-elles prises en premier?