Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS:在没有jQuery的情况下检测右键单击(内联)_Javascript_Right Click_Mousedown - Fatal编程技术网

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; 
  }
}​