Quelqu'un peut-il me dire ou me diriger vers une ressource qui explique pourquoi l'utilisation de javascript:void(0)
dans les hyperliens est nuisible (en particulier dans Internet Explorer 6)?Pourquoi javascript: void (0) est-il considéré comme nuisible?
Répondre
L'utilisation du mot-clé javascript:
dans un lien n'est de toute façon pas recommandée. Je n'ai réussi à trouver un article sur la raison pour laquelle il pourrait être dangereux:
a href=”javascript:void(0);” — avoid the void
Mais le consensus général montre que vous ne devriez pas l'utiliser car il pourrait confondre les navigateurs sans javascript soutien, pour certaines personnes navigateurs, il pourrait être analysé comme un lien invalide. Au lieu de cela, vous devez fournir un lien vers une page, soit en travaillant sur les fonctionnalités qui seraient fournies par javascript, soit en affichant un message sur le site nécessitant le javascript pour fonctionner correctement. Sur le même lien, return false;
de votre événement, comme ceci:
<a href="noscript.html" onclick="doSomething(); return false;">I'm a link</a>
Ou bien, utilisez return false;
ou preventDefault()
et returnValue
dans votre code javascript:
element.onclick = function()
{
/*
// return false is better for most situations (see bobince's comment)
if (event.preventDefault)
event.preventDefault();
else
event.returnValue = false;
*/
doSomething();
return false;
}
Cliquez sur <a href="javascript:void(0)" />
déclenche l'événement "beforeunload" dans objet "fenêtre" IE (j'ai testé dans IE10), mais cliquez sur <a href="#" />
n'a pas.
IE 11 ne déclenche plus onbeforeunload lorsque ce lien a cliqué. – tsh
- 1. NSCopyObject considéré comme nuisible?
- 2. /regex/(string) considéré comme nuisible?
- 3. style considéré comme nuisible?
- 4. function MyClass() {...}; MyClass.prototype = MyClass; - considéré comme nuisible?
- 5. Briser une boucle "for" en utilisant "break" considéré comme nuisible?
- 6. javascript: void (0), IE6, SWFAddress
- 7. javascript void (0) problème dans IE
- 8. "si" considéré comme nuisible dans les fichiers ASP.NET MVC View (.aspx)?
- 9. Silktest void 0 bug?
- 10. Pourquoi le renvoi explicite de 0 de main() est-il considéré comme une bonne pratique?
- 11. Pourquoi utiliser 'href = "javascript: void (0);"' au lieu de quelque chose de plus convivial?
- 12. Pourquoi Yahoo Indexing Bot est-il considéré comme "diabolique"?
- 13. Pourquoi un UITabBar est-il considéré comme modal?
- 14. Qu'est-ce que "#define assert (exp) ((void) 0)" fait?
- 15. EntLib est-il considéré comme un plugin?
- 16. unitpngfix javascript: Void (0) erreur ne permettant pas d'afficher la page avec https (en toute sécurité)
- 17. Math.min.apply (0, tableau) - pourquoi?
- 18. javascript: void (0) ou onclick = "return false" pour <a> - quel est le meilleur?
- 19. "javascript: void (0)" les liens cassent parfois les gestionnaires d'événements dans Internet Explorer
- 20. Pourquoi dans PHP CLI getmypid() retourne 0 comme un pid?
- 21. void * comme type de variable inconnue
- 22. CurrentDb.RecordsAffected renvoie 0. Pourquoi?
- 23. Serait-ce considéré comme une fuite de mémoire?
- 24. Pourquoi une API doit-elle renvoyer "void"?
- 25. Pourquoi un message de réussite considéré comme une erreur dans ftplib
- 26. Pourquoi "0D0" est-il considéré comme numérique dans SQL Server 2008?
- 27. Pourquoi ce tableau Java est-il considéré en deux dimensions?
- 28. Javascript ne fonctionne pas comme prévu, pourquoi?
- 29. Qu'est-ce qui est considéré comme une redistribution?
- 30. pourquoi est-ce.offsetLeft 0?
Merci pour ce Andy. Je connais les problèmes associés aux clics et j'ai jeté un coup d'œil sur le blog que vous avez mentionné. Mais, je n'ai pas trouvé même une seule explication valable pour pourquoi javascript: void (0) est considéré comme nuisible (en supposant que nous faisons tout le faux retour et de telles choses). – Abhi
@Abhi: Cet article de blog suggère que les images disparaissent lorsqu'elles sont enveloppées avec un lien 'void (0)' dans IE, je ne peux pas dire que je l'ai moi-même vécu. Au-delà de cela, je ne suis pas sûr que «void» soit vraiment nuisible. –
Moi non plus, je ne pense pas que ce problème, quel qu'il soit, était lié à 'void'. Cependant, ne jamais utiliser les liens 'javascript:' est de toute façon un bon conseil. Si vous utilisez des gestionnaires d'événements assignés par JavaScript plutôt que des attributs 'onclick =" ... "' (et c'est en général la meilleure approche), utiliser 'return false' est de loin la réponse la plus simple car cela fonctionnera sur IE et d'autres navigateurs sans avoir besoin de l'objet événement du tout. L'exemple ci-dessus n'a pas 'cancelBubble' sur IE, et ne fonctionne pas sur les autres navigateurs en raison de l'absence de paramètre' event' (le 'event' global est IE-only). – bobince