我如何使用 d3js 在 MacOS 上捕获 ctrl + click

kra*_*ski 6 javascript macos cross-browser d3.js browserstack

我收到一份报告,称我应该触发的脚本ctrl + click在 Mac 上不起作用。

如“确定在 mousedown 事件期间是否按下 Shift 键”所示,我们可以确定在鼠标单击测试等过程中是否按下了修饰键d3.event.shiftKeyd3.event.ctrlKeyshift检测在任何地方都有效,但ctrl似乎在 MacOS 上不起作用。

d3.select(window).on("click", function() {
    if (d3.event.ctrlKey) {
        alert("Mouse + Ctrl pressed");
    }
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

我没有 Mac,但我使用 BrowserStack 测试了上面的脚本:

  • Mavericks 配备 Safari 7.1、Firefox 54 和 Chrome 60;
  • Sierra 与 Safari 10.1、Firefox 54 和 Chrome 60

它不适用于 Mac 上的任何浏览器。不过它在 Windows 和 Linux 上运行良好。

我做错了什么?ctrl 键是 Mac 操作系统上的某种特殊键吗(我想是因为 Mac 也有“命令”键)。ctrl + click是否为了 Mac OS 兼容性而不鼓励使用?

编辑:我发现了这个:“有什么方法可以在 osx 浏览器的 javascript 中检测 ctrl + 单击吗?没有 jQuery ”。我的问题仍然存在,因为使用 d3.js 框架我希望有一种方法可以使用d3.event.

ela*_*ell 2

您可以通过以下方式检查:

if (d3.event.ctrlKey || d3.event.metaKey) {
    alert("Mouse + Ctrl pressed (or command key for Mac users)");
}
Run Code Online (Sandbox Code Playgroud)