Opera,自定义上下文菜单,右键单击

时间:2009-12-09 00:34:30

标签: javascript html opera

我想在我正在处理的网站上实现自定义上下文菜单。我使用了document.oncontextmenu,它适用于所有,除了Opera,我正在开发的主要浏览器。我将如何在Opera中获得相同的结果?我需要禁用默认上下文菜单并显示我的。

我想要做的第一件事就是选择鼠标右键,因为在Opera中无法识别document.body.onmousedown ...

谢谢,R。

4 个答案:

答案 0 :(得分:3)

做了一点研究,我在jQuery context menu plugin

上发现了一个有趣的小故事
  

* Opera 9.5有一个选项,允许脚本检测右键,但它   默认情况下禁用。此外,   Opera仍然不允许使用JavaScript   禁用浏览器的默认值   导致可用性的上下文菜单   冲突。

找到另一个有趣的位,可能会引导你在opera.linux google group

中找到正确的方向
  

Opera不支持javascript   事件oncontextmenu这些   脚本使用。 Opera确实支持   onrightclick,但正如你所看到的那样   默认情况下禁用。我被告知过   我们的开发人员的过去   实施支持并不是一件容易的事   使oncontextmenu成为别名   对于onrightclick,前者   显然做得更多。

...此代码段使用event.button来测试右键单击...

          addEventListener('mouseup',function(e){
                    if( e && e.button == 2 ){
                            document.write('a');
                            return false;
                    }
            },true); 

但是,这些解决方案都不能满足您的需求(基于第一个引用的细分市场)...... 似乎Opera认为右键点击网页应始终为用户提供“标准”上下文菜单。

答案 1 :(得分:1)

我认为Opera故意无法将右键单击传递给脚本。我想,有太多网站点击右键点击“复制保护”弹出消息。

我假设更改(右键单击 - >编辑网站首选项 - >脚本 - >允许脚本检测上下文菜单事件)使Opera的行为符合您的预期?

答案 2 :(得分:1)

uTorrent web UI以某种方式在Opera中右键单击显示自定义上下文菜单。您可以查看其来源以了解其实施方式。

答案 3 :(得分:1)

简而言之:您必须在Opera的设置中启用首选项,并且还不支持oncontextmenu,因此您必须收听mousedown或click事件。

当启用首选项时,某些脚本使用(非常难看)hack来禁用Opera自己的上下文菜单:从mousedown事件创建一个不可见的< input type = button>元素并将其放置在发生单击的位置。由于Opera没有按钮的右键单击菜单,因此不会显示其内部菜单。正如我所说,它非常难看:-p

正确的oncontextmenu支持应该会出现在Opera的下一个版本中 - 当然不包括次要的稳定性和安全性更新。如果您不喜欢丑陋的解决方法,请等待它。