我想在我正在处理的网站上实现自定义上下文菜单。我使用了document.oncontextmenu,它适用于所有,除了Opera,我正在开发的主要浏览器。我将如何在Opera中获得相同的结果?我需要禁用默认上下文菜单并显示我的。
我想要做的第一件事就是选择鼠标右键,因为在Opera中无法识别document.body.onmousedown ...
谢谢,R。
答案 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的下一个版本中 - 当然不包括次要的稳定性和安全性更新。如果您不喜欢丑陋的解决方法,请等待它。