Ответ 1
В обработчике событий inline, например onclick
, onchange
, onsubmit
и т.д., вам не нужен префикс javascript:
- причина, по которой вы часто это видите, потому что люди путают его с помощью href
, который я объясняю ниже. Это не вызывает ошибки - я считаю, что это интерпретируется как label - но это необязательно.
Не имеет значения, хотите ли вы вызвать функцию или запустить "простой" JS-оператор, ни в коем случае не включайте javascript:
- то есть все три из них действительны:
onclick="doSomething('some val');"
onclick="return false;"
onclick="doSomething(); doSomethingElse(); return false;"
Если вы используете встроенные атрибуты событий, не используйте префикс javascript:
.
(Я говорю "если вы используете встроенные атрибуты событий", потому что эта практика действительно устарела: лучше назначить обработчики событий с помощью JS в блоке script.)
Вам нужен только префикс javascript:
, если вы хотите запустить JavaScript из атрибута <a>
element href
, как это:
<a href="javascript: someFunc();">Whatever</a>
Это потому, что браузер обычно ожидает, что href
содержит URI, поэтому префикс javascript:
сообщает ему вместо этого ожидать JS-код. Однако я не рекомендую это делать, потому что страница не будет работать для людей с отключенным JS. Лучше включить href
, который направляет пользователя на страницу, сообщающую им включить JS, и включить onclick
для выполнения JS-функций:
<a href="/enableJS.html" onclick="doSomething(); return false;">Whatever</a>
Таким образом, ссылка делает что-то полезное для пользователей, независимо от того, включена ли JS или нет. return false
в конце обработчика кликов предотвращает поведение по умолчанию для клика (который должен был перейти к указанному URL-адресу).