3

通常,此组合会在 Chrome、Firefox 和 Mac 版 Safari 中将链接作为新选项卡打开。有没有办法检测到这一点?我知道 jquery 的event.which,但它给出了 的值1,这与简单的左键单击没有区别。

用例是 Backbone HTML5 pushstate,我想在其中附加一个'click'事件处理程序,该处理程序不会触发页面加载以进行正常导航,但仍允许用户通过 ⌘-⇧-click 在新选项卡中打开链接。

4

1 回答 1

4

您可以使用事件的metaKeyshiftKey属性:

$(window).click(function(e) {
  if(e.metaKey && e.shiftKey) {
    console.log("Command+Shift+Click");
  } else {
    console.log("Other click");
  }
});

因此,例如,如果您正在执行#!路由而不是实际跟踪 url,并且希望 command 或 command+shift 执行正常行为(在新选项卡中打开),您将有类似

function followLink(e) {
  if(!e.metaKey) e.preventDefault();
  yourApp.navigate('/link');
}
于 2012-06-06T09:02:45.193 回答