如何阻止shift +鼠标点击在Firefox中打开一个新窗口



我使用Javascript库D3,我有能力通过使用shift + left mouse click选择多个节点。当我在Firefox中执行此操作时(因为我的节点附加了图像),它会在新窗口/选项卡中打开图像。我真的不希望这种事发生。

如何阻止此事件的触发?

使用jquery:

jQuery(document).keydown(function(e){
  if(e.which === 16) {
    e.preventDefault();
    return;
  }
});

更新:与其禁用shift,不如禁用click。如果附加一个click事件并对其使用event. preventdefault(),则可以阻止它

这就是你如何在d3中完全禁用点击

d3.select("#prevent_link").on("click", function() {
    var e = d3.event;
    if(e.shiftKey) {
        // CANCEL THE EVENT, WHICH WILL PREVENT ANY LINKING FROM OCCURING
        e.preventDefault()
    }
});

如果你仍然想要链接工作-但打开在当前窗口而不是新窗口-你可以这样做:

d3.select("#prevent_window").on("click", function() {
    var e = d3.event;
    if(e.shiftKey) {
        e.preventDefault()
        // Get the href of the <a> tag that was clicked 
        var href = d3.select(this).attr("href");
        window.location = href;
    }
});

这是一个jsFiddle。最后一个例子不起作用,因为jsFiddle不允许保存包含window.location的脚本,所以我没有在fiddle中包含最后一行(window.location = href;)。

最新更新