Jshint: JSHint marca "javascript: void (0);" como um URL JS

Criado em 23 jun. 2014  ·  8Comentários  ·  Fonte: jshint/jshint

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.

Comentários muito úteis

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>

Todos 8 comentários

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

Esta página foi útil?
0 / 5 - 0 avaliações