如何停止shift + mouseClick在Firefox中打开一个新窗口

时间:2015-05-19 08:15:10

标签: javascript jquery firefox d3.js

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

如何阻止此事件被解雇?

2 个答案:

答案 0 :(得分:1)

使用jquery:

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

更新: 怎么样而不是禁用shift,你试图禁用点击。如果你附加一个click事件并在其上使用event.preventDefault()

,你可能会停止它

答案 1 :(得分:1)

这是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;
    }
});

Here's a jsFiddle。最后一个例子不起作用,因为jsFiddle不允许你保存包含window.location的脚本,所以我没有在小提琴中包含最后一行(window.location = href;)。