我想在我正在处理的网站上实现自定义上下文菜单。我使用了 document.oncontextmenu,它适用于除 Opera 之外的所有我正在开发的主要浏览器。我将如何在 Opera 中获得相同的结果?我需要禁用默认上下文菜单并显示我的。
我想做的第一件事是点击鼠标右键,因为 Opera 无法识别 document.body.onmousedown ......
谢谢,R。
我想在我正在处理的网站上实现自定义上下文菜单。我使用了 document.oncontextmenu,它适用于除 Opera 之外的所有我正在开发的主要浏览器。我将如何在 Opera 中获得相同的结果?我需要禁用默认上下文菜单并显示我的。
我想做的第一件事是点击鼠标右键,因为 Opera 无法识别 document.body.onmousedown ......
谢谢,R。
做了一些研究,我在一个 jQuery上下文菜单插件上发现了一个有趣的小花絮
*Opera 9.5 有一个允许脚本检测右键单击的选项,但默认情况下它是禁用的。此外,Opera 仍然不允许 JavaScript 禁用浏览器的默认上下文菜单,这会导致可用性冲突。
在opera.linux 谷歌组中发现了另一个有趣的点,它可能会引导你朝着正确的方向前进
Opera 不支持
oncontextmenu
这些脚本使用的 javascript 事件。Opera 确实支持onrightclick
,但如您所见,默认情况下它是禁用的。我们的开发人员过去曾告诉我,实现支持并不像为设置oncontextmenu
别名那么简单onrightclick
,前者显然做得更多。
...并且此代码段event.button
用于测试右键单击...
addEventListener('mouseup',function(e){
if( e && e.button == 2 ){
document.write('a');
return false;
}
},true);
然而,这些解决方案都不会给你你想要的(基于第一个引用的部分)......似乎 Opera 认为右键单击网页应该始终为用户提供“标准”上下文菜单。
我相信 Opera 故意没有将右键单击传递给脚本。我猜有太多网站在右键单击时会弹出愚蠢的“复制保护”消息。
我假设更改(右键单击-> 编辑站点首选项-> 脚本-> 允许脚本检测上下文菜单事件)使 Opera 的行为符合您的预期?
uTorrent Web UI 以某种方式在歌剧中右键单击时显示自定义上下文菜单。您可以查看其来源以了解其实施方式。
简而言之:您必须在 Opera 的设置中启用首选项,并且尚不支持 oncontextmenu,因此您必须监听 mousedown 或 click 事件。
某些脚本在启用首选项时使用(非常丑陋的)hack 来禁用 Opera 自己的上下文菜单:从 mousedown 事件中,创建一个不可见的 <input type=button> 元素并将其放置在单击发生的位置。因为 Opera 没有按钮的右键菜单,所以它的内部菜单不会出现。正如我所说,它非常丑陋:-p
适当的 oncontextmenu 支持应该会出现在 Opera 的下一个发行版本中——当然不包括次要的稳定性和安全更新。如果您不喜欢丑陋的解决方法,请等待它..