【问题标题】:jQuery/JavaScript - Allow CTRL + Click to open link in new tabjQuery/JavaScript - 允许 CTRL + 单击以在新选项卡中打开链接
【发布时间】:2014-11-09 01:09:19
【问题描述】:

在 jQuery 或 JavaScript 中是否有办法让用户能够通过 CTRL + 单击链接在新选项卡中打开链接,例如 <a href="">example</a> 元素?

这是我正在谈论的一个例子:-

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

如果您按住 CTRL 并单击 'some-link' 元素,则在使用上述代码时,它只会在当前页面中打开页面,您有什么想法吗?

【问题讨论】:

标签: javascript jquery


【解决方案1】:

检查是否按下了Ctrl 键,然后使用window.open 打开链接。该链接可能不会在新标签页中打开。见讨论here

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

JSFiddle

【讨论】:

  • if (e.metaKey) 可能是更好的方法,因为e.ctrlKey 可以在 Windows 环境下工作,而不是在 Mac 上,而metaKey 可以在这两种环境下工作
  • @Max 非常感谢尝试考虑每台设备,但我实际上无法让e.metaKey 工作(至少在 Windows 上),但检查其中任何一个似乎都有效。
【解决方案2】:

如果有人想在常规点击时禁用页面导航,进行 ajax 调用或其他操作,但仍想保留默认的 ctrl+click 和 right-click 和 middle-click(mouse scroll button) ,那就是方式:

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

event.which 也标准化按钮按下(mousedown 和 mouseupevents),左键为 1,中键为 2,中键为 3 对。使用 event.which 而不是 event.button。

【讨论】:

    【解决方案3】:

    在 Macintosh 键盘上,这是 ⌘ Command 键。在 Windows 键盘上,这是 Windows 键 (⊞ Windows)。

    更多信息请看这个页面:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多