2009-12-09 85 views
2

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

我想要做的第一件事就是拿起鼠标右键点击,因为document.body.onmousedown没有在Opera承认...

感谢,R.

+2

这很烦人,但我听说这是一种意识形态的东西使用Opera。他们认为用户应该始终可以访问Opera上下文菜单。如果你确实找到了解决方法来禁用默认的上下文菜单,我相信有很多人想知道! – DMKing

+1

最后,这已经在Opera 10.5中修复了 – user123444555621

回答

1

我相信歌剧故意不能将右键单击传递给脚本。我猜,太多的网站上点击右键点击“复制保护”弹出消息。

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

+2

谢谢,有用的信息,但没有它没有达到我想要的,这是一种耻辱:)它不是一个版权事物,它实际上增加了功能,工作有点烦人。 – flavour404

1

uTorrent网页界面以某种方式显示右键点击歌剧中的自定义上下文菜单。您可以查看它的来源以了解它是如何实施的。

+0

谢谢,我会检查出来。 – flavour404

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

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

一些脚本使用(真难看)黑客禁用Opera的自己的上下文菜单中启用时的偏好:从鼠标按下事件,创造一个无形的<输入类型=按钮>元素并在发生点击放置。因为Opera没有按钮的右键菜单,所以它的内部菜单不会出现。正如我所说的那样非常难看:-p

正确的oncontextmenu支持应该会在Opera的下一个发行版本中得到应用 - 不包括当然的微小稳定性和安全更新。如果你不喜欢丑陋的解决办法只是等待它..

相关问题