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 /cache
non 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 addScript
méthode était plus «bas niveau» que la JHtml:script
mé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:script
finalement, addScript
à un moment donné, un objet document est appelé , mais d'autres étapes intermédiaires sont-elles prises en premier?