Недавно я разработал модуль, который требовал внедрения определенных файлов JS и CSS в <head>каждую страницу. Изначально я использовал:
$doc =& JFactory::getDocument();
$doc->addScript(JURI::base(true).'/modules/mod_x/js/mod_x.js');
Однако я заметил, что при включенном кэшировании сайт загружал как кешированную версию, так /cacheи не кешированную версию /modules/mod_x/js/, вызывая ошибки JS.
Когда я изменил это на:
JHtml::script(Juri::base().'modules/mod_x/js/mod_x.js');
Скрипт загружался только один раз, из кеша, исправляя эти ошибки.
Я прочитал в документах, что addScriptметод был более «низкоуровневым», чем JHtml:scriptметод, но не говоря о том, что ...
Конечно, вам также нужно будет вручную написать некоторые шаги [которые JHtml: script выполняет для вас], которые будут выполнены автоматически с использованием [JHtml: script method] выше [если вы используете addScript].
... дальнейших подробностей не приводится.
Так в чем же разница? Я предполагаю , что в JHtml:scriptконечном итоге вызывает addScriptна объект документа , в какой - то момент, но и другие промежуточные шаги в первую очередь?