Si j'affecte le href
d'un élément à javascript:void(0);
(par opposition à #
), comme ceci :
$('#foobar').attr("href", "javascript:void(0);");
JSHint récupère la construction javascript:void(0);
tant qu'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
alors qu'en fait il ne fait rien et est sémantiquement valide. Il devrait y avoir une exception pour ces types d'URL de script.
Peut-être devrait-il s'agir d'un avertissement spécialisé ? Je ne peux pas être le seul à avoir été dérouté par cela.
Vous n'êtes pas.
Mettez simplement cette ligne en haut de votre fichier pour désactiver l'avertissement :
/*jshint scripturl:true*/
Mais le meilleur moyen est d'utiliser "#" dans le href et de retourner "false" pour tous les événements javascript :
<a href="#" onclick="doSomething();return false;">my link</a>
Non, le meilleur moyen est de garder votre JavaScript hors de votre balisage et attributs :P
@rwaldron : rectification, en effet
$('#foobar').attr("href", "#").click(function() {
// do it
});
Passe jslint :
$('#foobar').attr('href','javascript'+String.fromCharCode(58)+'void(0);');
@MikeGodin ressemble à un bogue distinct.
@kcampion mettre # et retourner false n'est pas toujours souhaitable
dans mon cas, je ne veux pas que le hash apparaisse
Commentaire le plus utile
Mettez simplement cette ligne en haut de votre fichier pour désactiver l'avertissement :
Mais le meilleur moyen est d'utiliser "#" dans le href et de retourner "false" pour tous les événements javascript :