2009-06-15 11 views
5

Ich habe ein jquery-Skript, das jedem Link ein click-Ereignis anhängt und eine Aktion ausführt, wenn auf den Link geklickt wird. Das hat gut geklappt, aber ich habe nur ein paar Betatester-Feedback bekommen, das mich vereitelt.So fangen Sie "in einem neuen Tab öffnen" klickt in jquery.click

Der Benutzer hat mit der rechten Maustaste auf den Link geklickt und ihn in einem neuen Tab geöffnet. Als sie das tat, fing jquery das Klicken nicht ein. Schlechter Benutzer. Ich habe das mit cmd-click reproduziert.

Gibt es eine Möglichkeit, diese Gesten einzufangen, oder ist das eine inhärente Einschränkung?

+0

Ich bezweifle sehr, dass dies möglich ist angesichts der DOM-Ereignisse, die Sie sowieso auf den Tabs im Browser vorausgehen. Ich weiß nicht, wie du zwischen dem Öffnen eines neuen Fensters unterscheiden würdest. – annakata

Antwort

1

So möchten Sie jeden Klick erfassen? Event das richtige oder mittlere? Sollte nicht die mousedown event genau das tun?

Natürlich könnte sie direkt auf einen Link klicken einfach auf "Link-Adresse kopieren" ...

+0

Ich ging auf diese Weise. Dies erfasst alle Klicks, was genau das ist, was ich wollte. Es hat auch den Rest des Codes vereinfacht. Vielen Dank! –

2

Sehen Sie, wenn Sie irgendwie Verwendung von jQuery-Plugin Rechtsklick machen können:

http://abeautifulsite.net/notebook/68

Verbrauch:

$(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(); 

}); 

Was die cmd-clickie bit, ich bin wirklich nicht sicher. Im Fall ist es hilfreich, hier ist die jQuery-Plugin Hotkeys:

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

+0

Das adressiert den Cmd + Klick aber nicht, oder? – Sampson

+0

Ich habe einen Link zu einer Ressource hinzugefügt, die zu diesem Zweck hilfreich sein könnte, aber ich bin mir nicht sicher, wie nützlich sie sein könnte. – karim79

+0

+1 für gute Links. Denken Sie, Hotkeys sollten das Problem lösen – TheVillageIdiot

0

I jquery.rightclick.js Code in Firebug gesehen habe. Es gibt Modifikatoren mit dem mousedown- und mouseup Ereignis wie:

altKey ctrlKey

so können Sie diese beiden Modifikatoren verwenden:

if (evt.altKey || evt.ctrKey)

in jquery.rightclick.js

Verwandte Themen