2.0 KiB
| name | description | metadata | ||
|---|---|---|---|---|
| feedback-no-inline-js | Никогда не писать inline JS-атрибуты (onchange/onclick/...) в HTML — только jQuery через .on() |
|
Пользователь прямо запретил inline JS-обработчики в HTML (onchange="this.form.submit()" и подобные) —
даже для мелочи вроде автосабмита <select> при смене значения.
Why: Явно сказал «никогда не пиши onchange="this.form.submit() такое в html» и прислал пример из
своего другого проекта — везде используется jQuery с делегированием событий через .on() на контейнер
($('#content').on('click', '#selector', fn)), а не атрибуты onXxx= в разметке.
How to apply: Для любого интерактивного поведения (submit по смене select, клики, любые обработчики)
писать JS в отдельном файле (App/media/js/*.js, подключается через $this->setScript('name.js') — см.
System\Classes\View), с jQuery-биндингом $(function () { $(container).on(event, selector, handler); }).
Никаких onclick=/onchange=/onsubmit= и т.п. атрибутов в .html-шаблонах — даже одна строчка.
Это касается и уже написанного System\Classes\ProfilerToolbar (там сейчас onclick инлайном для
переключения панели/вкладок, самодостаточности ради) — при следующей правке этого файла стоит переписать
на тот же паттерн, если пользователь укажет, что это тоже нужно поправить (сейчас не просил явно).