e.preventDefault()不起作用,但事件数据是正确的

时间:2015-07-08 04:38:14

标签: javascript

我将事件监听器应用于对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在这种情况下无效的原因。

1 个答案:

答案 0 :(得分:4)

您需要为contextmenu事件添加事件侦听器,例如

.addEventListener('contextmenu', function(e) {
    e.preventDefault();
}, false);

JSFiddle