当类型为“auto”时获取实际光标位置

12

我正在使用以下代码获取鼠标指针类型(使用jQuery):

$('*').mouseenter(function(){
    var cursor = $(this).css('cursor');
    console.log(cursor);
});

但是在某些元素上,它会打印auto(这是默认选项,意味着浏览器确定光标类型)。

我需要知道在这些情况下浏览器实际上显示的是什么(例如:pointerresize等)。

例如:对于链接元素(tagName=A),它打印出“auto”,但显示为“pointer”。

如何知道特定浏览器最终将显示哪种光标类型?换句话说,如何确定浏览器将选择哪种光标类型?

这种行为是否有文档记录?


就像你所说的,这取决于浏览器。'auto'是CSS值。如果你想要不同的话,为什么不在CSS中给你的元素指定光标值呢? - gforce301
游标类型的默认值是自动,您可以在此处找到 https://www.w3schools.com/cssref/pr_class_cursor.asp - Anish Agarwal
1
为什么不根据元素类型来决定光标类型呢?你可以建立一个表格,列出每个浏览器中元素类型及其默认光标。我认为这是唯一的方法。 - Mykybo
2个回答

1

这是由用户代理(即浏览器)决定的,它使用特定于平台的默认光标来显示您当前悬停的元素。

通用目的光标
'auto'
UA根据当前上下文确定要显示的光标,具体而言:在文本上方时,auto会表现为文本,否则为默认光标。

因此,在css中将光标设置为自动时,您无法确定它的外观。

我猜应该有一个概述,说明哪个html元素接收哪种光标类型,以便您可以根据元素类型进行决策,但我在网上找不到任何信息。此外,并没有保证某个特定的浏览器实际上会使用该光标,因为auto让它们随心所欲地选择要使用的光标类型。

唯一控制此项的选项是显式设置光标为特定类型。(另外,我对需要此功能的详细用例很感兴趣。)


我感兴趣的是浏览器如何决定。我正在编写一个第三方工具类,并且不想更改网站的CSS。 - OmriSh
我非常确定你做不到。浏览器决定要做什么,并且不会透露它的决定。 - Christoph
@OmriSh 我也发现了同样的情况。某些元素根据它们的内容具有多个不同的光标,例如在文本上方的 text 和在空白区域上的 default。你可以查看元素并猜测,如果不确定就假设为 default。这就是我现在要做的。 - ygoe

0
浏览器将您的 cursor 设置为 auto,因为它从未在您的代码中指定。如果您想获取当前的 cursor,则需要在您的 CSS 或 HTML 中显式地为每个要检查的元素设置它。
a {
   cursor: pointer;
}

在指定后,.css('cursor')将返回其类型。


这只是一个例子,我需要知道任何标签的情况。 - OmriSh
这正是我的意思 - 如果你想在任何标签上获得它,你需要在任何标签上指定它。否则,浏览器将使用默认值 auto - Koby Douek
你在回答中所做的是明确告诉浏览器要做什么,这不是我想要的。 - OmriSh
3
@KobyDouek,OP不想“设置”光标类型,他们想“检测”计算出的类型。 - GilZ

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