Se eu atribuir href
um elemento a javascript:void(0);
(em oposição a #
), assim:
$('#foobar').attr("href", "javascript:void(0);");
JSHint pega a construção javascript:void(0);
como um URL de script:
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
quando na verdade não está fazendo nada e é semanticamente válido. Deve haver uma exceção para esses tipos de URLs de script.
Esqueça .
Talvez este deva ser um aviso especializado? Não posso ser o único a ficar confuso com isso.
Você não está.
Basta colocar esta linha na parte superior do seu arquivo para desativar o aviso:
/*jshint scripturl:true*/
Mas a melhor maneira é usar "#" no href e retornar "false" para todos os eventos javascript:
<a href="#" onclick="doSomething();return false;">my link</a>
Não, a melhor maneira é manter seu JavaScript fora de sua marcação e atributos: P
@rwaldron : retificação, de fato
$('#foobar').attr("href", "#").click(function() {
// do it
});
Passa jslint:
$('#foobar').attr('href','javascript'+String.fromCharCode(58)+'void(0);');
@MikeGodin parece um bug separado.
@kcampion colocar # e retornar falso nem sempre é desejável
no meu caso não quero que apareça hash
Comentários muito úteis
Basta colocar esta linha na parte superior do seu arquivo para desativar o aviso:
Mas a melhor maneira é usar "#" no href e retornar "false" para todos os eventos javascript: