我工作的网络应用程序是在只存在2键鼠标的时期设计和开发的。现在我们市场上有超过3键鼠标,所有这些额外按钮在使用我们的应用程序时都会造成严重破坏。
我的目的是让用户只按下鼠标左键并禁用鼠标上的所有其他按钮。既然,我无法访问用户的系统,我必须通过浏览器本身(可能通过使用JavaScript)以某种方式实现这一点。
我该如何解决这个问题?任何指针都会非常有用。
答案 0 :(得分:1)
W3C事件模型足以通过event object
传递鼠标信息。这意味着您实际上可以阅读单击了哪个鼠标按钮。实施例
document.body.addEventListener('click', function( event ) {
console.log('mouse button clicked: ', event.which);
}, false);
使用该信息,只允许左键单击,这些信息由值1
表示。
document.body.addEventListener('click', function( event ) {
if( event.which === 1 ) {
// do something
} else {
event.stopPropagation();
event.preventDefault();
}
}, false);
答案 1 :(得分:1)
这取决于浏览器和文档模式。
这是我们调整prototype.js按钮图以适用于所有浏览器的方式。在docmode中包含IE10< 9。
function _isButtonForDOMEvents(event, code) {
return event.which ? (event.which === code + 1) : (event.button === code);
}
//var legacyButtonMap = { 0: 1, 1: 4, 2: 2 };
function _isButtonForLegacyEvents(event, code) {
switch (code) { //Fix where IE10 in DocMode lt9 caused isLeftClick to fail
case 0: return event.button == 0 || event.button == 1;
case 1: return event.button == 4;
case 2: return event.button == 2;
default: return false;
}
}
function _isButtonForWebKit(event, code) {
switch (code) {
case 0: return event.which == 1 && !event.metaKey;
case 1: return event.which == 2 || (event.which == 1 && event.metaKey);
case 2: return event.which == 3;
default: return false;
}
}
答案 2 :(得分:0)
我认为这是最接近禁用按钮的方法
document.addEventListener('click', function( e ){
if(e.which === 2 || e.which === 3) { // 2 = middle scroll button || 3 = right click
e.preventDefault();
e.stopPropagation();
return false;
}
});
如果它不起作用,您可以尝试'keydown'或'keyup'
,而不是点击