2012-05-27 10 views
6

Kiedy używam .click() na tagu <a>, wydarzenie działa tylko wtedy, gdy kliknę element. W przeciwnym razie, jeśli użytkownik kliknie Prawym przyciskiem myszy> Otwórz w nowym oknie lub Otwórz w nowej karcie, nie powoduje zdarzenia click()..click() zdarzenie, gdy "Otwórz w nowej karcie/oknie"

Moje pytanie brzmi: w jaki sposób wywołać zdarzenie click(), gdy użytkownik kliknie prawym przyciskiem myszy> otwórz w nowej karcie/oknie?

Oto HTML:

<a href="url">Click Me</a> 

Oto JS:

$("a").click(function(){ 
    alert('You clicked me!'); 
}); 
+0

ummm .. to tylko kliknięcie prawym przyciskiem myszy, a nie "otwórz w nowym oknie/karcie". –

+1

Nie sądzę, że to możliwe. Jedynym sposobem, jaki widzę, jest złapanie kliknięcia prawym przyciskiem myszy i ręczne wyzwalanie zdarzenia "kliknięcie". – VisioN

+0

Nie sądzę, że to możliwe. Myślę, że jednym z powodów jest to, że nie chcesz, aby strona internetowa mogła śledzić zewnętrzny link, który odwiedzasz. – gigadot

Odpowiedz

2

Można spróbować tego kodu, ale należy pamiętać, że zmiana UI nie jest dobrym ideia:

var addEvent = (document.addEventListener) ? 
    function(target,event,fn){ 
     if(target) return target.addEventListener(event,fn,false); 
    }: 
    function(target,event,fn){ 
     if(target) return target.attachEvent(('on' + event),fn); 
    }, 
allLinks = document.links || document.getElementsByTagName('a'); 
for(var i=0;i<allLinks.length;i++) 
    addEvent(allLinks[i],'mouseup',function(e){ 
     var e = e || event; 
     if(e.which===3){ 
      alert('Open in new tab/window'); 
      e.preventDefault(); 
      return false; 
     } 
    }); 
+0

Wygląda na to, że uważa wszystkie kliknięcia prawym przyciskiem myszy za wydarzenie "otwórz w nowej karcie". – dlsso

Powiązane problemy