gpt4 book ai didi

javascript - 单击 Command 键不会打开新选项卡,但单击中键可以打开新选项卡

转载 作者:行者123 更新时间:2023-12-03 21:37:08 25 4
gpt4 key购买 nike

在我的网站上,这是一个使用 Sammy.js 和 jQuery 的单页 JS 网站,当我用鼠标中键单击链接时,该链接会在新选项卡中打开。但当我在 Mac 上按住命令单击时,却没有。这种情况在 Firefox 和 Chrome 中都会发生,所以我认为它一定在某种程度上符合规范。

这发生在 Macbook Air 上(即触控板 + 命令按钮)。不过,大多数网站都可以正常工作,命令单击与普通的中键单击相同。

亲自尝试一下:https://circleci.com 。在“关于”、“主页”和“联系人”之间按住 Command 键单击,您应该会遇到问题 - 它们不会在新选项卡中打开。

最佳答案

此处推测,但稍后将通过 Mac 进行确认。这已被证实可以在 Mac 上运行。

Win ctrl+click 或 Mac command+click 会被“正常”点击监听器拾取,就像使用任何其他修饰键(alt+click、shift+click 等)进行的单击一样。

这尤其令人困惑,因为 Mac 上的 ctrl+click 会被解释为操作系统级别的右键单击。另一方面,命令单击被解释为中键单击,而是浏览器首选项。

假设您没有专门依赖于修改点击的站内功能,则适当的做法是从点击监听器中排除此类事件,并允许它们冒泡以由浏览器 native 处理。鉴于someone in the similar situation的经验,您应该能够将以下内容添加到点击处理程序(可能是 Brilliand 指出的库级别的委托(delegate)):

if (e.metaKey || e.ctrlKey) return;

当在处理程序的开头添加引用当前点击事件的 e 时,这应该绕过任何后续的 e.preventDefault();

更新:

它确实有效!在 this rather minimalistic fiddle ,我能够识别何时单击命令或单击控制,从而避免执行单击处理程序的其余部分,其中包括 ajax 获取内容和 e.preventDefault();。这允许在 Mac 上“按预期”处理命令单击,即在新选项卡中打开链接。

考虑到这一发现,these lines现在应该阅读

if (e.isDefaultPrevented() || e.metaKey || e.ctrlKey) {
return;
}

关于javascript - 单击 Command 键不会打开新选项卡,但单击中键可以打开新选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10660360/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com