2014-04-18 71 views
3

我想禁止鼠标右键。但我发现,如果我写这个:为什么我不能使用addEventListener来停止contextmenu事件?

document.addEventListener('contextmenu', function(event) { 
    return false; 
}, false); 

它不会工作,事件仍然会工作。

但如果我把它写这样的,

document.oncontextmenu = function() { 
    return false; 
} 

鼠标右键将不起作用。

我想知道为什么我不能使用addEventListener停止事件contextmenu

+0

什么是contextmenu? – ravi

+0

并非所有浏览器都允许您在整个页面上禁用上下文菜单。 – DanMan

回答

3

如“Preventing the Browser's Default Action”中所述,返回false值不足以防止默认操作。你需要调用preventDefault()方法上Event对象:

document.addEventListener('contextmenu', function(event) { 
    event.preventDefault(); 
}, true); 

DEMO

+0

它仍然不起作用。我努力了。 – qiuyuntao

+0

@ user3168232我已经更新了我的答案。 – Engineer

+0

为什么用这种方式,我们使用event.perventDefault(),而不是返回false? – qiuyuntao

0

我相信你需要useCapture,试图传递true作为第三个参数 document.addEventListener(),看看有没有为您解决。

相关问题