Speculating here, but will confirm later from a Mac. This has been confirmed to be working on a Mac.
Win ctrl+单击或 Mac 命令+单击会被“正常”单击侦听器拾取,就像使用任何其他修饰键(alt+单击、shift+单击等)进行的单击一样。
这特别令人困惑,因为 ctrl+clickon a Mac被解释为在操作系统级别上右键单击。另一方面,按住 Command 键单击是not解释为中键单击,而是浏览器首选项。
假设您没有专门依赖于修改点击的站点内功能,那么从点击侦听器中排除此类事件是适当的,而是允许它们冒泡以由浏览器本机处理。鉴于经验处于类似情况的人 http://groups.google.com/group/mootools-users/browse_thread/thread/c09106ef2d8f6a83/f7600acffd78e30a,您应该能够将以下内容添加到单击处理程序(可能是 Brilliand 指出的库级别的委托):
if (e.metaKey || e.ctrlKey) return;
当添加到处理程序的开头时e
引用当前的点击事件,这应该避免以下任何事件e.preventDefault();
Update:
它确实有效!在这个相当简约的小提琴 http://jsfiddle.net/ovfiddle/cqbBj/,我能够识别何时单击命令或单击控制,以避免执行其余的单击处理程序,其中包括 ajax 获取内容和e.preventDefault();
。这允许在 Mac 上“按预期”处理命令单击,即在新选项卡中打开链接。
考虑到这一发现,这些行 https://github.com/quirkey/sammy/blob/master/lib/sammy.js#L274现在应该读
if (e.isDefaultPrevented() || e.metaKey || e.ctrlKey) {
return;
}