В чем разница между JHtml: script () и $ doc-> addScript?

Недавно я разработал модуль, который требовал, чтобы некоторые JS и CSS-файлы вводились в <head> каждой страницы. Первоначально я использовал:

$ doc = & JFactory :: GetDocument ();
$ Doc- > addScript (JURI :: основание (истина) '/модули /mod_x /JS /mod_x.js'.);
Тем не менее, я заметил, что когда кеширование было включено, сайт загружал как кешированную версию из /cache, так и не кэшированную версию из /modules /mod_x /js / вызывая ошибки JS.

Когда я изменил это на:

JHTML :: скрипт (Juri :: база () 'модули /mod_x /JS /mod_x.js.);

Сценарий загружался только один раз из кэша, разрешая эти ошибки.

I прочитал в документах , что метод addScript был более «низким» ', чем метод JHtml: script, но не говоря о том, что ...

  

Конечно, вам также потребуется вручную выполнить некоторые из шагов [, которые JHtml: сценарий для вас], который будет выполнен автоматически с использованием [JHtml: сценарий] выше [если вы используете addScript].

... подробности не приводятся.

Так в чем разница? Я предполагаю, что JHtml: script в конечном итоге вызывает addScript в объекте документа в какой-то момент, но являются первыми промежуточными шагами?

10 голосов | спросил codinghands 25 PMpFri, 25 Apr 2014 17:44:43 +040044Friday 2014, 17:44:43

2 ответа


8

JHtml :: script содержит дополнительную логику. См. http://api.joomla.org/cms-3/classes/JHtml.html # method_script для ссылки API

По умолчанию он обнаружит настройку отладки и используемый браузер и загрузит соответствующий скрипт. Например, если debug включен, он загрузит несжатую версию файла, если он есть.

Существуют дополнительные параметры, которые позволяют переопределить файл на уровне шаблона и другие вещи.

Майкл Бэбкер написал хорошее руководство, как использовать JHtml :: script (), чтобы разрешить переопределения: http://www.babdev.com/blog /139 потребительных-медиа-папки позволяют-Переопределяемый-медиа

Функция в репо для справки: https://github.com/joomla /joomla-cms/blob/staging/libraries/cms/html/html.php#L659

Страница официальной документации, которая теперь обновляется Джорджем: http://docs.joomla.org/J3.3: Adding_JavaScript_and_CSS_to_the_page

ответил Bakual 25 PMpFri, 25 Apr 2014 18:34:23 +040034Friday 2014, 18:34:23
4

в двух словах:

  • JHtml :: script () - позволяет переопределить конкретный скрипт (за исключением того, что уже привязан к JDocument), зависит от некоторых факторов (см. @Bakual answer);
  • $ doc-> addScript () - прикреплять скрипт непосредственно к документу, не проверяя переопределения;

Если вы являетесь разработчиком расширения, настоятельно рекомендуется использовать JHtml :: script () при добавлении скрипта. Это позволит вашим пользователям переопределить некоторые конкретные сценарии, в зависимости от того, что они хотят.
Также есть аналогичный метод для css.

ответил Fedik 26 AMpSat, 26 Apr 2014 10:19:54 +040019Saturday 2014, 10:19:54

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132