为什么Safari、Chrome和Firefox在Windows上不支持“cursor:context-menu”?但IE9和Opera支持?

7

这个页面显示IE9和Opera 11.6支持在Windows上使用上下文菜单光标,但我知道Chrome、Safari和Firefox不支持在Windows上使用上下文菜单光标,它们只会在这些浏览器中显示常规箭头。

我简直无法理解为什么它们不支持这个光标。它将非常有用,特别是当它在Mac上的这些浏览器中得到支持时。

它的目的是当您希望用户知道您已经在元素上放置了一个特殊功能,并且当您在该元素上激活上下文菜单触发器时,该功能将被激活。对于Windows来说,这是右键单击(最可能是弹出自定义上下文菜单)。

显然,在Web上每个东西都有上下文菜单,您可以在页面上的任何位置右键单击,通用的上下文菜单将出现。但是,当您在元素上放置自己的特殊功能并通过右键单击(以及Mac上有什么——上下文菜单键?)来激活它时,此光标就派上用场了。

有人知道为什么这三个浏览器在Windows上不支持此功能,但在Mac上支持吗?


可能是因为只有 Windows 使用上下文菜单光标,在其他操作系统上没有意义? - Blazemonger
1
什么?那不合理。Windows 是唯一不使用上下文菜单光标的操作系统,Linux 和 Mac 都使用。 - android.nick
2个回答

5
在Mozilla开发者网络的"CSS鼠标指针"页面上,您可以看到:

上下文菜单可在光标下方使用。 在Gecko/Firefox上未在Windows上实现,bug 258960 WONTFIX。

在这个页面上,你可以阅读更多关于这个bug的信息,例如:

在本机Windows应用程序中,具有快捷菜单的区域的光标一直是与正常光标相同。使用自定义光标除了让人们感到不适之外,几乎没有什么作用。


1
由于您忘记回答“为什么”的问题,我将引用Moz页面上的内容:“在本机Windows应用程序中,具有快捷菜单的区域的光标始终与普通光标相同。使用自定义光标除了使用非默认普通光标之外几乎没有任何作用,只会让人们感到恼怒。” - Blazemonger
2
同时,规范对于期望的渲染效果存在一些不太清晰的描述: http://www.w3.org/TR/css3-ui/#cursor "在不支持某些值的情况下,用户代理可能会将其视为 'auto'。例如,在不具备 'context-menu' 光标概念的平台上,用户代理可能会呈现 'default' 或者适当的其他内容。" - Blazemonger

3
要真正实现跨浏览器/平台,您可以使用来自图像URL的自定义光标来显示上下文菜单光标,以任何您喜欢的方式。
例如,您可以应用以下CSS规则:
cursor: url("https://istack.dev59.com/ygtZg.webp"), auto;

这看起来像这样:

Custom Context Menu

这里是一个jsFiddle演示

注意: 即使你可以解决任何跨平台渲染问题,你可能还想考虑是否应该使用上下文菜单光标。它很少被使用,可能会让看到它的用户感到困惑,而且上下文菜单本身在移动部署中无法很好地翻译,这将是大多数网络用户的一部分。

进一步阅读:


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