我使用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;
)。