当ctrl或中间单击时,防止当前窗口跟随单击/ .click()链接

时间:2011-10-18 20:14:33

标签: javascript jquery onclick window.location

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

通过ctrl +点击其中一个框来查看我的意思:http://mw.modhistory.com/download-1

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

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

有什么想法吗?谢谢!

- Fligg

1 个答案:

答案 0 :(得分:0)

我假设您的事件监听器正在将事件发送到路由/分配功能,或者您没有想要实现的大量点击事件不适用于此功能。< / p>

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

// 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 */

请记住,过去支持找出哪些按钮多年来真的很糟糕。 如果您有一个抽象的库,请使用它。 否则,除了向使用较新浏览器的人提供此功能,或者编译以前的值和按钮值之外,它最终会解析浏览器版本,这绝不是好事。