Réponses:
<a onclick="jsfunction()" href="#">
ou
<a onclick="jsfunction()" href="javascript:void(0);">
Éditer:
La réponse ci-dessus n'est vraiment pas une bonne solution, ayant beaucoup appris sur JS depuis que j'ai initialement publié. Voir la réponse d'EndangeredMassa ci-dessous pour la meilleure approche pour résoudre ce problème.
JavaScript discret, aucune dépendance de bibliothèque:
<html>
<head>
<script type="text/javascript">
// Wait for the page to load first
window.onload = function() {
//Get a reference to the link on the page
// with an id of "mylink"
var a = document.getElementById("mylink");
//Set code to run when the link is clicked
// by assigning a function to "onclick"
a.onclick = function() {
// Your code here...
//If you don't want the link to actually
// redirect the browser to another page,
// "google.com" in our example here, then
// return false at the end of this block.
// Note that this also prevents event bubbling,
// which is probably what we want here, but won't
// always be the case.
return false;
}
}
</script>
</head>
<body>
<a id="mylink" href="http://www.google.com">linky</a>
</body>
</html>
hrefsi je ne veux pas rediriger l'utilisateur et que je veux juste exécuter du code? Edit: Je vois qu'il peut être laissé vide: href="".
onclickévénement via window.onloadplutôt que de le placer onclickdirectement dans la <a>balise?
<a href="javascript:alert('Hello!');">Clicky</a>
EDIT, des années plus tard: NON! Ne fais jamais ça! J'étais jeune et stupide!
Edit, encore une fois: quelques personnes ont demandé pourquoi vous ne devriez pas faire cela. Il y a plusieurs raisons:
Présentation: HTML doit se concentrer sur la présentation. Mettre JS dans un HREF signifie que votre HTML traite maintenant, en quelque sorte, de la logique métier.
Sécurité: Javascript dans votre HTML enfreint la politique de sécurité du contenu (CSP) . La stratégie de sécurité du contenu (CSP) est une couche de sécurité supplémentaire qui permet de détecter et d'atténuer certains types d'attaques, notamment les attaques par script intersite (XSS) et par injection de données. Ces attaques sont utilisées pour tout, du vol de données à la dégradation du site ou à la distribution de logiciels malveillants. En savoir plus ici .
Accessibilité: les balises d'ancrage permettent de créer des liens vers d'autres documents / pages / ressources. Si votre lien ne va nulle part, ce devrait être un bouton . Cela permet aux lecteurs d'écran, aux terminaux braille, etc., de déterminer plus facilement ce qui se passe et de fournir aux utilisateurs malvoyants des informations utiles.
href='#'et alert()dans onclick?
Et pourquoi pas discret avec jQuery:
$(function() {
$("#unobtrusive").click(function(e) {
e.preventDefault(); // if desired...
// other methods to call...
});
});
HTML
<a id="unobtrusive" href="http://jquery.com">jquery</a>
Un Javascript discret présente de nombreux avantages, voici les étapes à suivre et pourquoi il est bon à utiliser.
le lien se charge normalement:
<a id="DaLink" href="http://host/toAnewPage.html"> cliquez ici </a>
ceci est important car cela fonctionnera pour les navigateurs avec javascript non activé, ou s'il y a une erreur dans le code javascript qui ne fonctionne pas.
javascript s'exécute au chargement de la page:
window.onload = function(){
document.getElementById("DaLink").onclick = function(){
if(funcitonToCall()){
// most important step in this whole process
return false;
}
}
}si le javascript s'exécute avec succès, peut-être en chargeant le contenu de la page actuelle avec du javascript, le retour false annule le déclenchement du lien. en d'autres termes, mettre return false a pour effet de désactiver le lien si le javascript s'est exécuté avec succès. Tout en lui permettant de s'exécuter si le javascript ne fonctionne pas, faites une belle sauvegarde pour que votre contenu soit affiché dans les deux sens, pour les moteurs de recherche et si votre code se casse, ou est affiché sur un système non javascript.
le meilleur livre sur le sujet est "Dom Scription" de Jeremy Keith
Ou, si vous utilisez PrototypeJS
<script type="text/javascript>
Event.observe( $('thelink'), 'click', function(event) {
//do stuff
Event.stop(event);
}
</script>
<a href="#" id="thelink">This is the link</a>
basé sur l'utilisation de la réponse @mister_lucky avec jquery:
$('#unobtrusive').on('click',function (e) {
e.preventDefault(); //optional
//some code
});
Code HTML:
<a id="unobtrusive" href="http://jquery.com">jquery</a>
il suffit d'utiliser javascript: ---- exemplaire
javascript:var JFL_81371678974472 = new JotformFeedback({ formId: '81371678974472', base: 'https://form.jotform.me/', windowTitle: 'Photobook Series', background: '#e44c2a', fontColor: '#FFFFFF', type: 'false', height: 700, width: 500, openOnLoad: true })