JQuery: le gestionnaire de clics n'est pas invoqué lorsque le lien est ouvert dans un nouvel onglet / fenêtre

J'ai remarqué que l'utilisateur clique sur un lien avec, disent le bouton du milieu, ou le bouton shift / ctrl + gauche, le gestionnaire des clics attaché au lien hypertexte n'est pas appelé.

J'ai vu des solutions pour suivre l'événement mousedown, mais ce que j'aimerais, c'est de suivre l'événement exact de suivre un lien.

Y a-t-il des suggestions? Merci

mousedown / mouseup est en effet la seule façon d'être informé de l'interaction du bouton intermédiaire, donc la détection d'un événement down-then-up sans événement d'événement intermédiaire est plus ou moins le meilleur que vous pouvez faire. Ce n'est pas très bon.

Je ne dérangerais pas, car même si vous avez piégé cette éventualité, il existe de nombreuses autres interactions que vous ne pouvez pas prendre. En plus du clic-milieu (qui pourrait ne pas être «Ouvrir dans un nouvel onglet» dans tous les navigateurs / configurations, par exemple dans IE6 qui sera l'utilisateur en mode défilement), l'utilisateur peut cliquer avec le bouton droit de la souris et ouvrir dans nouveau Fenêtre ', ou faites glisser le lien vers la barre d'adresse ou un nouvel onglet, ou diverses autres actions spécifiques au navigateur pour effectuer une navigation.

Si le lien se trouve sur votre site, passez-le lorsque la page est chargée au lieu de la page où elle obtient le lien. Si le lien est vers un autre site, vous devez utiliser une urne de redirection pour que votre site puisse le suivre (exemple: http://yoursite.com/redirect.html?redirect=http://oursite.com ).

Dans la page de redirection, vous pouvez faire quelque chose comme ça (si vous souhaitez utiliser javascript):

 $(document).ready(function(){ //insert your tracking code here... var redirect = getParameterByName('redirect'); if(redirect != ''){ window.location = redirect; } }); //From http://stackoverflow.com/questions/901115/get-querystring-with-jquery/901144#901144 function getParameterByName( name ){ name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); var regexS = "[\\?&]"+name+"=([^&#]*)"; var regex = new RegExp( regexS ); var results = regex.exec( window.location.href ); if( results == null ) return ""; else return results[1]; } 

Vous pouvez utiliser les événements 'mousedown' 'mouseup' en combinaison avec "event.which".

Exemple: http://jsbin.com/ikahe/edit

Comment faire clic secouer à droite … ou plutôt à gauche.

http://mislav.uniqpath.com/2011/03/click-hijack/