通过右键单击图像来预防默认

时间:2014-06-17 19:51:07

标签: javascript jquery

是否可以在图片上触发文档右键单击事件?

这就是我到目前为止所做的,我只能跟踪我的图像上的右键单击事件

<script type="text/javascript">
    $("#myImage").mousedown(function (event) {
        if (event.which == 3) {
           //I need Some code to fire Document right click event (or maybe a different method)
        }
    });
</script>

感谢您的帮助

EDIT1: 我想要的是当我点击我的图像时,我想要显示菜单,而不是图像右键菜单,但是文档右键菜单 这就像图像不存在或禁用,再次感谢您的帮助:)

EDIT2: 我到目前为止所做的是使用preventDefault禁用右键单击事件,现在我需要显示菜单:

<script type="text/javascript">
document.addEventListener('contextmenu', function (e) {
e.preventDefault();
//Need to display the menu
}, false);
</script>

EDIT3: 它工作,谢谢,我创建了自己的菜单,如果我有默认菜单,那将是非常好的,但这个也很完美:)

<script type="text/javascript">
    $(document).bind("contextmenu", function (event) {
        event.preventDefault();
        $(".custom-menu").toggle(100).
  css({
      top: event.pageY + "px",
      left: event.pageX + "px"
  });
    });
   //To hide the menu if left click event is fired
    $(document).bind("mousedown", function () {
        $(".custom-menu").hide(100);
    });
</script>
//New Menu
<ul class='custom-menu'>
  <a>Back</a><br />
  <a>Refresh</a><br />
  <a>Save</a><br />
</ul>
<style type="text/css">
.custom-menu {
  position: absolute;
  background-color:#EEE;
  overflow: hidden;
  width: 100px;
  }
</style>

1 个答案:

答案 0 :(得分:4)

event.which实际上是错误的检查......

使用event.button == 2。请参阅MouseEvent文档。

或者使用contextmenu event,如@MarshallOfSound建议的那样(但随后作为答案删除),但请注意,如果用户通过另一种方法调用contextmenu而不是右键单击,它也可能会触发,例如在OSX上左键单击+ CTRL。这是最近的HTML5内容,因此它可能不适用于旧浏览器。

编辑修改完成后,contextmenu可能更适合您的需求。此外,event.preventDefault是您的朋友。 ;)