Если я назначу href
элемента javascript:void(0);
(в отличие от #
), например:
$('#foobar').attr("href", "javascript:void(0);");
JSHint принимает конструкцию javascript:void(0);
как URL-адрес скрипта:
PS C:\Users\hal9000\Development\strugee.github.com> grunt lint
Running "jshint:all" (jshint) task
js\main.js
30 | $('#lightbulb-icon').attr("href", "javascript:void(0);");
^ Script URL.
>> 1 error in 4 files
когда на самом деле он ничего не делает и семантически действителен. Для этих типов URL-адресов скриптов должно быть исключение.
Да ладно .
Может быть, это должно быть специальное предупреждение? Не могу быть единственным, кого это смутило.
Ты не.
Просто поместите эту строку в начало файла, чтобы отключить предупреждение:
/*jshint scripturl:true*/
Но лучший способ - использовать "#" в href и возвращать "false" для всех событий javascript:
<a href="#" onclick="doSomething();return false;">my link</a>
Нет, лучше всего не допускать попадания кода JavaScript в разметку и атрибуты: P
@rwaldron : действительно, исправление
$('#foobar').attr("href", "#").click(function() {
// do it
});
Проходит jslint:
$('#foobar').attr('href','javascript'+String.fromCharCode(58)+'void(0);');
@MikeGodin выглядит как отдельный баг.
@kcampion помещает # и возвращает false - не всегда желаемое
в моем случае я не хочу, чтобы хеш появлялся
Самый полезный комментарий
Просто поместите эту строку в начало файла, чтобы отключить предупреждение:
Но лучший способ - использовать "#" в href и возвращать "false" для всех событий javascript: