如何在任意鼠标位置(x,y)检测元素
How can I detect the element(s) at an arbitrary mouse position (x,y)?
可能重复:
在指定位置获取元素-JavaScript
如何检测任意鼠标位置(x,y)的元素?
我使用mouseenter
/mouseleave
来突出显示悬停项目。不幸的是,当鼠标隐式移动时,这两个选项都不会触发,这会导致高亮显示错误的项目。隐式移动鼠标的一个示例是使用箭头键或轨迹板滚动页面。
你可以在这里看到一个带有评论的工作演示:http://jsfiddle.net/bkG2K/6/
我的解决方法是每隔一段时间检查一次鼠标的位置,或者如果可能的话,在滚动后立即检查,并根据当前鼠标坐标更新悬停状态。但我不确定如何找到给定X,Y的DOM元素。
想法?如果你对根本问题有更好的解决方案,请放心!
您可以使用本地JavaScript elementFromPoint(x, y)
方法,该方法返回视口中坐标x、y处的元素。
请参阅elementFromPoint w3c草案
还有一个代码示例:
<html>
<head>
<title>elementFromPoint example</title>
<script type="text/javascript">
function changeColor(newColor)
{
elem = document.elementFromPoint(2, 2);
elem.style.color = newColor;
}
</script>
</head>
<body>
<p id="para1">Some text here</p>
<button onclick="changeColor('blue');">blue</button>
<button onclick="changeColor('red');">red</button>
</body>
</html>
您可以使用setInterval()
来连续检查元素的悬停事件,但不建议使用.hover(...)
和css来提高应用程序的性能。
我不知道内部实现是否不同,但对于您试图实现的目标方法是.hover(...)
,它在每个状态更改中需要两个回调来执行。
或者,您可以在光标位置模拟setInterval()
和.mousemove()
事件(尽管您应该进行浏览器检查,并且只在有问题的浏览器中使用它,因为这是一种黑客攻击,并且应该尽可能少的人接触它)
相关文章:
- 在幻灯片放映时检测元素具有特定类
- Javascript检测元素前面的元素
- 使用jquery.visible.js和偏移量检测元素是否在视口中
- 滚动后,检测元素何时返回到原始位置
- 无法按类名检测元素
- 如何在Angular中有效地检测元素点击
- 如何使用 jQuery 检测元素的顶部靠近浏览器底部
- 我需要一种新的方法来检测元素 HTML 是否有更改
- 我们如何检测元素外部的双击
- JavaScript中有没有办法检测元素是否附加了任何事件
- 检测元素高度变化,如果太小则隐藏
- 如何检测元素在跨域父级的iframe中是否可见
- jQueryUI-检测元素是否被拖动
- 使用JavaScript检测元素外部的点击
- JQuery:检测元素和所有子元素何时加载
- 在没有JQuery的情况下激发此不可检测元素的.click()事件
- 如何检测元素外部的点击,但该元素有子元素
- 检测元素是否已通过javascript调整大小
- 如何检测元素外部的触摸端事件
- 检测元素外的子对象何时获得焦点