检测浏览器是否支持右键单击事件覆盖。

6

我正在使用一个上下文菜单的jQuery插件,我需要检测哪些浏览器支持它。如何实现?

我听说一些版本的Opera和Safari不支持这种右键覆盖操作。


1
这个概述可能会很有用:http://www.quirksmode.org/dom/events/contextmenu.html - Chris Lercher
1个回答

4
你可以手动创建和触发上下文菜单事件。如果设置了正确的处理程序,您可以检测处理程序是否被调用。
以下是一个示例(使用jQuery创建和观察事件):
function testContextMenuEvent() {
  var supported = false;
  function handler(e) {
    supported = true;
    e.stopPropagation();
  }
  $(document).bind('contextmenu', handler);
  var evt = jQuery.Event("contextmenu");
  $(document).trigger(evt);
  $(document).unbind('contextmenu', handler);
  return supported;
}

这是一个测试页面:http://jsfiddle.net/Hk4xA/6/

编辑2:DOM又出了问题。我忘记了createEvent在IE上完全不起作用。因此,我使用jQuery来创建事件。


不错!不过你觉得它能适用于jQuery吗?我没有使用Prototype。 - Jonah
当然。原型在第5、7和11行中使用。jQuery的事件API只是类似方法的不同名称:observe -> bind,stopObserving -> unbind,stop -> preventDefault。请参见我的编辑示例。 - Alsciende
哎呀,没错,在IE7中也出现了错误。DOM赢了。我会编辑我的答案。 - Alsciende

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接