【发布时间】:2014-07-12 17:44:42
【问题描述】:
我有一个链接,为了优化页面响应/流量,我使用 javascript click 处理程序处理其 click 事件。在click,我只加载页面的一部分。但是链接的 URL 是正确的,在独立选项卡中打开它会正确打开页面。
但是当用户按下 CMD-Click 链接(在新选项卡中打开链接)时,click 处理程序运行并且页面不在新选项卡中打开。基本上我禁用了 CMD-Click(在新选项卡中打开)功能。如何在代码中检测到这一点,以使 CMD-Click 按预期工作。 (在 Windows 中 CMD 被 Ctrl 代替)?
$(".link").on("click", function(event) {
if (/* TODO: how to detect if the user CMD/Ctrl-clicked the link? */) {
return true;
}
// ... load only necessary things for normal clicks
})
我必须编写操作系统/浏览器特定的代码来解决上面的TODO 吗? (我使用 jQuery)
【问题讨论】:
-
你会对鼠标右键/在新标签页中打开做什么?鼠标滚动点击? Shift + 单击?
-
@YuryTarabanko:
event.which可以处理中键。右键单击并选择在新选项卡中打开不会首先触发事件处理程序。 -
@josh3736 我相信有更好的方法来判断您是否需要加载整个页面。也许
X-Requested-With标头可以解决问题 -
有很多键可以改变默认行为,而不仅仅是
ctrl。你最好使用filter-altered-clicks之类的东西来为你处理。