何我用d3js捕捉ctrl +点击MacOS

时间:2017-08-01 13:14:39

标签: javascript macos d3.js cross-browser browserstack

我收到一份报告,说明ctrl + click上应该触发的脚本在Mac上无效。

如“Determine if Shift key is pressed during mousedown event”中所示,我们可以确定在鼠标点击测试d3.event.shiftKeyd3.event.ctrlKey等过程中是否按下了修改键。shift检测功能无处不在,但{ {1}}似乎无法在MacOS上运行。

ctrl
d3.select(window).on("click", function() {
    if (d3.event.ctrlKey) {
        alert("Mouse + Ctrl pressed");
    }
});

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

  • 使用Safari 7.1,Firefox 54和Chrome 60的小牛队;
  • Sierra使用Safari 10.1,Firefox 54和Chrome 60

它无法与Mac上的任何浏览器一起使用。它可以在Windows和Linux上正常工作。

我做错了什么? ctrl键是Mac OS上的某种特殊键(我想它是因为Mac也有'命令'键)。是否阻止使用<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>兼容Mac OS?

编辑:我找到了这个:“any way to detect ctrl + click in javascript for osx browsers? no jQuery”。我的问题仍然存在,因为使用d3.js框架我希望有一种方法可以使用ctrl + click以跨浏览器兼容的方式执行此操作。

1 个答案:

答案 0 :(得分:0)

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

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