Javascript 我可以处理HTML上的右键单击事件吗<;按钮/>;元素?

Javascript 我可以处理HTML上的右键单击事件吗<;按钮/>;元素?,javascript,html,Javascript,Html,我在某处和其他地方看到了大量关于右键单击事件以及如何使用JavaScript捕获和处理它们的问题和答案,通常使用浏览器生成的事件对象的按钮属性 然而,有一件事我还没有找到,可能是因为这是一个非常奇怪的请求,那就是如何捕获和处理对HTML元素的右键单击。浏览器处理按钮的方式与处理其他元素的方式不同。最重要的是,在按钮上单击鼠标右键似乎没有任何作用。没有上下文菜单,而且据我所知,没有事件 我错了吗?我希望如此,因为这将使我的生活更轻松。如果没有,我可以用一个div和一些CSS来模拟一个按钮,但我宁愿

我在某处和其他地方看到了大量关于右键单击事件以及如何使用JavaScript捕获和处理它们的问题和答案,通常使用浏览器生成的
事件
对象的
按钮
属性

然而,有一件事我还没有找到,可能是因为这是一个非常奇怪的请求,那就是如何捕获和处理对HTML
元素的右键单击。浏览器处理按钮的方式与处理其他元素的方式不同。最重要的是,在按钮上单击鼠标右键似乎没有任何作用。没有上下文菜单,而且据我所知,没有事件

我错了吗?我希望如此,因为这将使我的生活更轻松。如果没有,我可以用一个div和一些CSS来模拟一个按钮,但我宁愿避免它。有什么想法吗


(注:这是一个愚蠢的附带项目,所以不要担心我试图在任何客户或任何东西面前放置一个基于右键单击的界面。我很清楚该界面可能有多可怕。)

当然,只需添加一个
onmousedown
侦听器,检查按下的鼠标:

JS:

HTML:

测试
演示:

这就是你要找的吗?添加上下文菜单:

<input type="button" value="click me" id="btn">
<button id="btn2">right click</button>`
您还可以使用“上下文菜单”:


或者,也许有一点初级理解:

<script type="text/javascript">
function mouseclick(ele, e) {
if (e.type == 'click') {
    alert('Left Click Detected!');
}
    if (e.type == 'contextmenu') {
    alert('Right Click Detected!');
}
}
</script>

<a href="/" 
onclick="mouseclick(this, event)" 
oncontextmenu="mouseclick(this, event)" >link name</a>

功能鼠标点击(ele,e){
如果(e.type=='click'){
警报(“检测到左键单击!”);
}
如果(e.type=='contextmenu'){
警报(“检测到右键单击!”);
}
}

可能重复:“我可以*模拟一个带有div的按钮”在Chrome、Firefox、Opera(都在Linux上)和Windows 7上的IE10上,上下文菜单为我触发事件:没有早期方便的IEs可供检查(已经运行了太多虚拟机)。@IanClark谢谢,修复了。@DevlshOne不是重复的。正如我在文章的第一句中提到的,虽然我看到过这篇文章和其他类似的文章,但它似乎并不适用于按钮。尽管我将以TJCrowder的身份检查
上下文菜单
事件suggested@IanClark在最新的版本中是这样的:22.0我将改用
onmouseup
,但是谢谢!我忘了这些家伙了。这些事件是生成的,但不是一个
onclick
事件,这真是太奇怪了。@KenB--很好,第一次写这样的东西,很高兴它成功了!这绝对是另一种方式。谢谢
<input type="button" value="click me" id="btn">
<button id="btn2">right click</button>`
document.getElementById('btn').onclick = function() {
  alert('click!')
}

document.getElementById('btn2').oncontextmenu = function() {
  alert('right click!')
}
document.getElementById('btn2').oncontextmenu = function() {
 alert('right click!')
}
<script type="text/javascript">
function mouseclick(ele, e) {
if (e.type == 'click') {
    alert('Left Click Detected!');
}
    if (e.type == 'contextmenu') {
    alert('Right Click Detected!');
}
}
</script>

<a href="/" 
onclick="mouseclick(this, event)" 
oncontextmenu="mouseclick(this, event)" >link name</a>