Javascript JS:在没有jQuery的情况下检测右键单击(内联)
我正在调用一个函数,它构建一个包含多个链接的表 我想检查是否用鼠标右键或左键单击了链接 我试图将以下部分添加到Javascript JS:在没有jQuery的情况下检测右键单击(内联),javascript,right-click,mousedown,Javascript,Right Click,Mousedown,我正在调用一个函数,它构建一个包含多个链接的表 我想检查是否用鼠标右键或左键单击了链接 我试图将以下部分添加到超链接中 onmousedown="function mouseDown(e){ switch (e.which) { case 1: alert('left'); break; case 2: alert('middle'); break; case 3: alert('right'); break; } }" 但是如果我点击一个链接,什么也不会发生。html: &
超链接中
onmousedown="function mouseDown(e){
switch (e.which) {
case 1: alert('left'); break;
case 2: alert('middle'); break;
case 3: alert('right'); break; }
}"
但是如果我点击一个链接,什么也不会发生。html:
<a href="#" onmousedown="mouseDown(event);">aaa</a>
.这里是对xdazz答案的修改,它支持使用e.button的浏览器,将值标准化,并将其存储在e.which中。添加的行是JQuery库中使用的行
function mouseDown(e) {
e = e || window.event;
if ( !e.which && e.button !== undefined ) {
e.which = ( e.button & 1 ? 1 : ( e.button & 2 ? 3 : ( e.button & 4 ? 2 : 0 ) ) );
}
switch (e.which) {
case 1: alert('left'); break;
case 2: alert('middle'); break;
case 3: alert('right'); break;
}
}
我很确定,根据全局事件对象的不同,这是IE独有的功能。Chrome:yes,firefox:no,IE9:no:\有点讽刺意味的是,Chrome在IE删除IE专有站点的同时,还实施了反功能以与IE专有站点兼容。@Quentin修复了答案,使用jQuery让我错过了这样的事情。我尝试过IE,我得到了“e”,但里面没有
keycode
keycode
是0
,但按钮有值。我认为,这是IE特有的“keycode
”,因为它总是相同的数字(左键单击:1,中键单击:4,右键单击:2)。这是否正确?不要使用内部事件处理程序属性。改用DOM事件绑定。我已经尝试过了,但它对我不起作用。可能是因为该表稍后加载(并且不会出现在呈现页面的源代码中)
function mouseDown(e) {
e = e || window.event;
if ( !e.which && e.button !== undefined ) {
e.which = ( e.button & 1 ? 1 : ( e.button & 2 ? 3 : ( e.button & 4 ? 2 : 0 ) ) );
}
switch (e.which) {
case 1: alert('left'); break;
case 2: alert('middle'); break;
case 3: alert('right'); break;
}
}