Jshint: JSHint отмечает «javascript: void (0);» как URL-адрес JS

Созданный на 23 июн. 2014  ·  8Комментарии  ·  Источник: jshint/jshint

Если я назначу 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>

Все 8 Комментарий

Да ладно .

Может быть, это должно быть специальное предупреждение? Не могу быть единственным, кого это смутило.

Ты не.

Просто поместите эту строку в начало файла, чтобы отключить предупреждение:

/*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 - не всегда желаемое
в моем случае я не хочу, чтобы хеш появлялся

Была ли эта страница полезной?
0 / 5 - 0 рейтинги