Javascript:获取图像中点击的 X、Y 坐标

标签 javascript html mouseevent

<分区>

这是我最近遇到的问题。

我正在尝试获取用户在图像中单击的位置的 X 和 Y 坐标。不管它在用户窗口中的位置、缩放、滚动位置、窗​​口大小、用户早餐吃了什么等等,X、Y 坐标只需要考虑用户在窗口中单击的位置图像但不包括图像在屏幕中的位置,即图像中左上角的点为 0,0。 (希望我能解释清楚。)

我之所以这样说,是因为在我当前的 JavaScript 函数中,我正在获取某物 的 X、Y 坐标,但我不确定到底是什么。我认为这是用户在整个窗口中单击的位置,而不是图像中的位置。这意味着如果图像的位置不同,如果用户滚动,如果我将图像移动到页面中的其他位置等,则 X,Y 坐标会发生变化。这是我当前的 HTML 代码:

<img id="hotspot_image" name="hotspot_image" style="width: 50%" src="misc/pages/hotspotimage.jpg" alt="Hotspot image" onclick="clickHotspotImage(event);"/>

这是我的 Javascript 函数:

function clickHotspotImage(event) {
    var xOffset = document.getElementById('hotspot_image').offsetLeft;
    var xCoordinate = event.clientX;
    var yOffset = document.getElementById('hotspot_image').offsetTop;
    var yCoordinate = event.clientY;
    var hotspotlist = document.getElementById('hotspot_list').value;
    document.getElementById('hotspot_list').value = document.getElementById('hotspot_list').value + '\n' + xCoordinate + ',' + yCoordinate;
}

最后几行代码采用 X,Y 坐标对,并将其添加到名为 hotspot_list 的 <textarea> 标签中包含的列表的末尾。有谁知道我是否走在正确的轨道上或者是否可以指出正确的方向,或者知道我需要什么缺失的部分才能获得真正的 X,Y 坐标?谢谢!

最佳答案

您应该使用事件对象中的 offsetX 和 offsetY 来获取相对于触发事件的元素的鼠标坐标。正如您所注意到的,clientX 和 clientY 将返回相对于窗口的鼠标坐标。

Event object properties

这应该可以解决问题

function clickHotspotImage(event) {
    var xCoordinate = event.offsetX;
    var yCoordinate = event.offsetY;
    var hotspotlist = document.getElementById('hotspot_list').value;
    document.getElementById('hotspot_list').value = document.getElementById('hotspot_list').value + '\n' + xCoordinate + ',' + yCoordinate;
}

关于Javascript:获取图像中点击的 X、Y 坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49807088/

相关文章:

javascript - getFiles() 不是文件夹

QT全局鼠标监听器

Java - 单击鼠标时,tick() 循环会导致多个操作

javascript - javascript如何将对象转换为字符串

javascript - contentEditable - Firefox <br/> 标签

javascript - 在两个 Angular 数组之间切换 z-index

css - 如何将新的可见高度强制设置为 div 并使用滚动条功能显示其余部分?

jquery - 有没有办法在使用 jQuery 数据表插件的 HTML 表中获取当前记录数

javascript - javascript中如何判断鼠标指针是否越过某个元素

javascript - 如何在菜单项中显示内联图标?