0

我正在使用 onclick 事件使整个 div 成为可导航的链接。这很好用,直到您使用 ctrl+click 或鼠标中键单击以在新选项卡中打开目标。我发现确实打开了一个新标签,但当前标签也是如此。

通过 ctrl+单击此处的其中一个框,了解我的意思:http: //mw.modhistory.com/download-1

我不想通过总是强制它进入新标签来中断正常浏览的能力......用户应该在这里有选项。但我希望能够在新标签中快速打开十几个这样的链接,而不必反复“返回”。

我有一个我认为使用 preventDefault() 的绝妙主意,但这最终与我的想法相反,完全阻止了打开新标签的能力(一旦我真正想到它是什么,这才有意义打算这样做。)

有任何想法吗?谢谢!

--弗利格

4

1 回答 1

0

我假设您的事件侦听器正在将事件发送到路由/分配功能,或者您希望实现的点击事件并不多用于此功能。

无论哪种方式,您都可以执行以下操作:

// Assuming we already know what the purpose of the click was, and its target
function (e) {
    if (!!e.ctrlKey) { /* CTRL was held during mouse-click */ }
    else { /* not held */ }
}

至于鼠标按钮,它们非常混乱。

您应该可以使用以下任何一种:

e.which /* 1-based: middle-button is #2 */

或者

e.button /* 0-based: middle-button is #1 */

请记住,过去多年来对确定哪些按钮是非常糟糕的支持。如果您有一个进行抽象的库,请使用它。否则,除了向使用较新浏览器的人提供此功能或编译 which 和 button 的先前值之外,它最终会解析浏览器版本,这永远不会很好。

于 2011-10-18T20:37:47.873 回答