我使用Javascript库D3,我可以使用shift + left mouse click
选择多个节点。当我在Firefox中执行此操作时(因为我的节点附加了图像),它会在新窗口/选项卡中打开图像。我真的不希望发生这种情况。
如何阻止此事件被解雇?
答案 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;
)。