2009-06-15 7 views
5

J'ai un script jquery qui attache un événement click à chaque lien, en exécutant une action lorsque le lien est cliqué. Cela a fonctionné très bien, mais je viens de recevoir des commentaires de betatester qui me déjouent.Comment piéger "ouvrir dans un nouvel onglet" clique dans jquery.click

L'utilisateur faisait un clic droit sur le lien et l'ouvrait dans un nouvel onglet. Quand elle a fait cela, jquery n'a pas piégé le clic. Mauvais utilisateur. Je l'ai reproduit avec cmd-clic aussi bien.

Existe-t-il un moyen de piéger ces gestes ou une limitation inhérente?

+0

Je doute vraiment que ce soit possible étant donné les événements DOM sur lesquels vous vous basez de toute façon sur les onglets antérieurs à la date dans les navigateurs. Je ne sais pas comment tu ferais la distinction entre l'ouverture dans une nouvelle fenêtre. – annakata

Répondre

1

Vous voulez capturer chaque clic? Événement le bon ou le milieu? Est-ce que le mousedown event ne devrait pas faire ça?

Bien sûr, elle pourrait juste cliquer sur un lien juste « Copier le lien » ...

+0

J'ai fini par aller dans cette direction. Cela capture tous les clics, ce qui est exactement ce que je voulais. Il a également fini par simplifier le reste du code. Je vous remercie! –

2

Voyez si vous pouvez utiliser en quelque sorte de plugin jQuery rightclick:

http://abeautifulsite.net/notebook/68

Utilisation:

$(document).ready(function() { 

    // Capture right click 
    $("#selector").rightClick(function(e) { 
     // Do something 
    }); 

    // Capture right mouse down 
    $("#selector").rightMouseDown(function(e) { 
     // Do something 
    }); 

    // Capture right mouseup 
    $("#selector").rightMouseUp(function(e) { 
     // Do something 
    }); 

    // Disable context menu on an element 
    $("#selector").noContext(); 

}); 

En ce qui concerne le bit cmd-Clickie, je ne suis vraiment pas sûr. Dans le cas où il est utile, voici le plugin jQuery hotkeys:

http://www.webappers.com/2008/07/31/bind-a-hot-key-combination-with-jquery-hotkeys/

+0

Cela ne concerne pas le cmd + clic, n'est-ce pas? – Sampson

+0

J'ai ajouté un lien vers une ressource qui pourrait être utile à cet effet, mais je ne sais pas vraiment à quel point cela pourrait être utile. – karim79

+0

+1 pour les grands liens. Pensez que les raccourcis clavier devraient résoudre le problème – TheVillageIdiot

0

Je l'ai vu code jquery.rightclick.js dans Firebug. Il y a des modificateurs avec le mousedown et l'événement mouseup comme:

altKey ctrlKey

, vous pouvez utiliser ces deux modificateurs:

si (evt.altKey || evt.ctrKey)

dans jquery.rightclick.js

Questions connexes