日期:2014-05-16  浏览次数:20371 次

javascript 处理鼠标右键事件
Java代码 复制代码
  1. 使用右键事件 ??
  2. 在需要右键的地方加上??onmousedown="if(event.button?==?2)?alert('点击右键了!');即可 ??
  3. ? ??
  4. 不经意地被一位同事问起在javascript里面如何检测右键事件,并且屏蔽原来的右键菜单,上网查找一翻之后发现一些比较简单的方法。 ??
  5. 如设置onmousedown,检查其event.button的值是不是2(代表右键)。 ??
  6. 这个方法在FF和IE中都可用,但是在Maxthon中event.button却是0,这让我有点困惑,Maxthon不是IE内核的吗? ??
  7. 我只能设想Maxthon这个壳是做过手脚的。然而如果设置onmouseup,其event.button值就是2了。 ??
  8. 所以如果检测右键的话,是设置其onmouseup即可。 ??
  9. ??
  10. document.getElementById("test").onmouseup=function(oEvent)?{ ??
  11. ????if?(!oEvent)?oEvent=window.event; ??
  12. ????if?(oEvent.button==2)?{ ??
  13. ????????//--?do?something?for?user?right?click ??
  14. ????????//?alert("Mouse?up"); ??
  15. ????} ??
  16. } ??
  17. ??
  18. 但是如果还需要屏蔽右键的话,还是用oncontextmenu比较简单,但这时就不是检测右键,而是检测是否弹出上下文菜单。 ??
  19. 屏蔽的方法跟屏蔽其他默认行为的方法是一样的,一般来说都是有效的,不过因为某些浏览器有禁止禁止弹出右键菜单的功能,所以如果需要在用户点击右键时做点事情,最好还是不要放在oncontextmenu中,而是放在onmouseup中并检测右键,附加oncontextmenu来屏蔽原来的菜单。 ??
  20. ??
  21. document.getElementById("test").oncontextmenu=function(event)?{ ??
  22. ????//--?do?something?here ??
  23. ????//?alert("ContextMenu?Popup"); ??
  24. ????//--?prevent?the?default?behavior ??
  25. ????if?(document.all)?window.event.returnValue?=?false;//?for?IE ??
  26. ????else?event.preventDefault(); ??
  27. }; ??
  28. ??
  29. 通过一些简单的测试,可以发现在FF和在IE存在着有趣的区别。 ??
  30. 在?onmouseup和oncontextmenu事件处理中都使用alert,可以看出来是先执行onmouseup事件再到oncontextmenu?的,在IE中,两者会非常连贯的在一起执行,(均认为是发生在test元素上的事件),而在FF里面则不是(前提是test元素所占区域比较小,当?alert弹出时需要移动鼠标才能点击