При использовании значений по умолчанию "Good Parts" в JSLint использование обработчиков событий HTML (таких как onclick) не допускается.
Использование обработчиков событий в фактической разметке помечено, да:
<div onclick="...">
Это обычно считается плохой практикой. Смешивать поведение сценариев с разметкой трудно для чтения и управления; проще сохранить все ваши сценарии вместе в реальном сценарии, так что вам не нужно углубляться в разметку, чтобы найти, какие вызовы сценариев вызываются.
Кроме того, поместив код скрипта в контекст, где требуется HTML-кодирование, вы добавляете дополнительный слой, позволяющий избежать путаницы. Вы заканчиваете тем, что говорите такие неприятные вещи, как:
<div onclick="if (a<b) this.innerHTML= "I said \"Hello &amp; welcome!\""">
Естественно, трудно получить правильную кодировку, и если вы работаете с динамическими значениями, неправильная комбинация кодировок оставляет вас с проблемой внедрения скрипта (XSS).
То же самое в автономном скрипте:
somediv.onclick= function() {
if (a<b)
this.innerHTML= "I said \"Hello & welcome!\"";
};
- один прояснившийся уровень прохождения.
JSLint не жалуется на это использование. Хотя некоторые утверждают, что использование слушателей лучше, так как вы можете добавить несколько слушателей к событию, это более тяжелое решение, так как вам нужно работать с IE <9 <code>attachEvent вместо addEventListener
и, возможно, предоставить что-то для более старых браузеры, которые не поддерживают ни один.