2014-11-09 11 views
8

Gibt es eine Möglichkeit in jQuery oder JavaScript den Benutzer zu ermöglichen, STRG + Klicken Sie auf einen Link, um einen Link in einem neuen Tab wie <a href="">example</a> Element zu öffnen? HierjQuery/JavaScript - Erlaube STRG + Klick zum Öffnen des Links im neuen Tab

ist ein Beispiel dafür, was ich rede: -

jQuery('#some-link').bind('click', function() { 
    window.location = 'http://someurl.com'; 
}); 

Wenn Sie CTRL halten und klicken Sie auf die ‚some-link‘ Element, es öffnet sich nur die Seite innerhalb der aktuellen Seite, wenn die oben mit Code, irgendwelche Ideen, wie das geht?

+0

Werfen Sie einen Blick .. http://stackoverflow.com/questions/4907843/open-a-url-in-a-new-tab-using-javascript – saruftw

+0

Sie werden wahrscheinlich auch für eine Abfrage überprüfen möchten Tastendruck Ich denke – DannyS3

+0

Es gibt viele Schlüssel, die das Standardverhalten ändern. Es ist besser, etwas wie ['filter-changed-clicks'] (https://github.com/bfredit-it/filter-altered-clicks) zu verwenden, um es für dich zu handhaben. –

Antwort

12

Überprüfen Sie, ob die Taste Ctrl gedrückt ist, und öffnen Sie die Verbindung mit window.open. Der Link wird jedoch möglicherweise nicht in einem neuen Tab geöffnet. Siehe die Diskussion here.

jQuery('#some-link').bind('click', function(e) { 
    e.preventDefault(); 
    if (e.ctrlKey){ 
    window.open('http://someurl.com','_blank') 
    } 
}); 

Siehe JSFiddle

+1

'if (e.metaKey)' könnte besser Ansatz, da 'e.ctrlKey' wird auf Windows-Umgebung nicht in Mac arbeiten, während' metaKey' funktioniert in beiden – Max

+1

@Max definitiv zu schätzen, versuchen, für jedes Gerät zu berücksichtigen, aber Ich konnte 'e.metaKey' nicht wirklich zum Funktionieren bringen (zumindest unter Windows), aber nach beiden zu suchen, scheint zu funktionieren. –

1

Falls jemand will Seitennavigation auf regelmäßigen Klick deaktivieren, einen Ajax-Aufruf oder etwas zu machen, aber will immer noch die Standard-Abfrage halten + klicken und mit dem rechten Maustaste und Middle- klicken (Maus Scroll-Taste), das ist die Art und Weise:

$('#link').bind('click', function(e) { 
 
    if (!e.ctrlKey && e.which != 2 && e.which != 3) { 
 
    e.preventDefault(); 
 
    // some logic: 
 
    $('#box').append('<br>').append($('<a>').html('not paging but doing something! Now try with CTRL')); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="box"> 
 
    <a id="link" href="http://stackoverflow.com/questions/26823884/">this question</a> 
 
</div>

JQuery documentation sagt:

event.which auch Taste drückt (mousedown- und mouseupevents) normalisieren, 1 für linke Taste Berichterstattung, 2 für mittlere und 3 für rechts. Verwenden Sie event.which anstelle von event.button.

+0

Dies sollte die akzeptierte Antwort sein. – thexpand

+0

Geben Sie jedoch eine Erklärung - warum genau 2 und 3 Schlüssel. – thexpand

Verwandte Themen