我将事件监听器应用于对mousedown事件做出反应的两个元素。它们工作正常,但它会导致出现右键菜单,我试图阻止它。
我不完全理解为什么它不起作用。这是我的代码:
function moveDiv(e){
e.preventDefault(); //not working
if(e.button == 2){ //works on right click only, so e is correct data
console.log(this); //works - shows element data
}
}
function load(){
function addEvents(){
var d = getDiv('overview'); //getDiv gets the element by id
d.addEventListener('mousedown',moveDiv,false);
var d = getDiv('login_data');
d.addEventListener('mousedown',moveDiv,false);
}
templateLoad('main.html',addEvents); //works: async loads page, then call function 'addEvents'
}
load();
我添加了评论以显示哪些行正在运行,我使用console.log进行了测试。 e
只有在右键点击时才会{1}}正确,因此我不知道e.button
在这种情况下无效的原因。
答案 0 :(得分:4)
您需要为contextmenu事件添加事件侦听器,例如
.addEventListener('contextmenu', function(e) {
e.preventDefault();
}, false);