如何检测任意鼠标位置 (x,y) 处的元素?

发布于 2024-11-13 07:03:47 字数 597 浏览 3 评论 0原文

可能的重复:
获取指定位置的元素 - JavaScript

如何检测任意位置的元素鼠标位置(x,y)?

我使用 mouseenter/mouseleave 来突出显示悬停的项目。不幸的是,当鼠标隐式移动时,这些都不会触发,这会导致突出显示错误的项目。隐式移动鼠标的一个示例是使用箭头键或触控板滚动页面。

您可以在此处查看带有注释的工作演示:http://jsfiddle.net/bkG2K/6/

我的解决方法的想法是经常检查鼠标的位置,或者在可能的情况下在滚动后检查鼠标的位置,并根据当前鼠标坐标更新悬停状态。但我不确定如何找到给定 X,Y 的 DOM 元素。

有想法吗?如果您有更好的解决根本问题的方法,请随意!

Possible Duplicate:
Get element at specified position - JavaScript

How can I detect the elements at an arbitrary mouse position (x,y)?

I am using mouseenter/mouseleave to highlight hovered items. Unfortunately neither of these fire when the mouse moves implicitly and this leads to the wrong item being highlighted. An example of moving the mouse implicitly would be scrolling the page with arrow keys or track pad.

You can see a working demo with comments here: http://jsfiddle.net/bkG2K/6/

My idea for a workaround is to check the mouse's position every so often, or just after scrolling if possible, and update the hover state based on the current mouse co-ordinates. But I'm not sure how I can find DOM elements given an X,Y.

Ideas? If you have a better solution to the root problem, feel free!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

冰之心 2024-11-20 07:03:47

您可以使用本机 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 来提高应用程序性能。

You can use the native JavaScript elementFromPoint(x, y) method, that returns the element at coordinates x,y in the viewport.

See the elementFromPoint w3c draft

And, a code sample:

<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>

You can use setInterval() to continuously check the element's hover event but it's not recommended, try to use .hover(...) and css instead to enhance the application performance.

听风吹 2024-11-20 07:03:47

我不知道内部实现是否有所不同,但对于您想要实现的预期方法将是 .hover(...) ,它需要在每个状态更改中执行两个回调。

或者,您可以 setInterval() 并在光标位置模拟 .mousemove() 事件(尽管您应该进行浏览器检查并仅在有问题的浏览器中使用它,因为这是一种黑客行为,应该尽可能少的人接触它)

I don't know if internal implementations differ, but for what you are trying to achieve the intended method would be .hover(...) which takes two callbacks to execute in each state-change.

Alternatively, you could setInterval() and simulate .mousemove() event at the cursor's position (Though you should do a broswer check and only use it in the problematic browser since this is kind of a hack, and as few as possible people should be exposed to it)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文