简体   繁体   中英

jQuery/JavaScript - Allow CTRL + Click to open link in new tab

Is there a way in jQuery or JavaScript to enable the user to CTRL + Click a link to open a link in a new tab like <a href="">example</a> element?

Here is an example of what I am talking about:-

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

If you hold CTRL and click the 'some-link' element, it just opens the page within the current page when using the above code, any ideas on how do this?

Check to see if the Ctrl key is pressed, and open the link using window.open . The link may not open in a new tab though. See the discussion here .

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

See JSFiddle

In case anyone wants to disable page navigation on regular click, to make an ajax call or something, but still wants to keep the default ctrl+click and right-click and middle-click(mouse scroll button) , that is the way:

 $('#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 says:

event.which also normalizes button presses (mousedown and mouseupevents), reporting 1 for left button, 2 for middle, and 3 for right. Use event.which instead of event.button.

On Macintosh keyboards, this is the ⌘ Command key. On Windows keyboards, this is the Windows key (⊞ Windows).

For more see this page:

https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/metaKey

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM