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

前端 未结 3 2066
悲哀的现实
悲哀的现实 2021-02-14 02:12

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 example element?

相关标签:
3条回答
  • 2021-02-14 02:58

    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

    0 讨论(0)
  • 2021-02-14 03:01

    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.

    0 讨论(0)
  • 2021-02-14 03:12

    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

    0 讨论(0)
提交回复
热议问题