Javascript 在单击的像素内获取元素?
我不知道从哪里开始,我已经在谷歌上搜索了几天,试图找出如何获取页面上选中/点击像素内的元素。我从一位同事那里看到了这个函数,但我不知道它的作用是什么:Javascript 在单击的像素内获取元素?,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我不知道从哪里开始,我已经在谷歌上搜索了几天,试图找出如何获取页面上选中/点击像素内的元素。我从一位同事那里看到了这个函数,但我不知道它的作用是什么: function onclick(e){ var x = e.clientX, y = e.clientY; $("*").filter(function(){ position.left > x && position.left + width < x;
function onclick(e){
var x = e.clientX,
y = e.clientY;
$("*").filter(function(){
position.left > x && position.left + width < x;
/*same for height*/;
});
}
简单地说,我需要能够单击一个像素并获取该像素内的div/元素。对于我的应用程序来说,这并不像只说div.class那么简单,因为元素之间用不透明度和z索引重叠 单击文档中的任何位置都将记录单击的元素 $document.clickfunction{ console.loge.target; }; .盒子{ 宽度:50px; 高度:50px; 背景:蓝色; } 您可以使用document.elementFromPointx,y;如果你想通过x和y坐标得到一个元素。 有关文档,请参阅
function onclick(e){
var x = e.clientX,
y = e.clientY,
el = document.elementFromPoint(x, y);
}
问题中显示的代码不起作用,因为没有定义变量位置、宽度,但是它的基本思想是正确的——遍历所有元素,并将单击的坐标与每个元素的框进行比较
我想自己试试。移动了正在工作的演示而不是片段。像素内是什么意思?你是说像素所在的元素吗?@isherwood基本上,点击的位置就是它将选择的元素。忽略DOM,仅通过填充、宽度、边距等来获取元素实际不在的位置。要了解发生的原因,请使用一些CSS设置{color:transparent;background:red;},因为文本元素是矩形,就像其他未应用CSS剪裁的元素一样。根据与所单击元素中的字符串相关联的文本引擎,您必须执行近乎魔术的操作来确定单击的位置是空白还是负空格。所以我很确定,如果没有一些非常奇特和复杂的代码magic,这是不可能的。OP需要所有包含给定点的元素。点击测试,也就是说。在这种情况下,你的标题和问题的措辞是反向的。这正是我不想要的,也不会起作用。我的应用程序中的元素彼此重叠,具有z索引和不透明度,因此我不能只选择单击的元素,我必须根据单击的像素进行区分。我认为这几乎是不可能的。如果我错了,并且这是可能的,那么它将需要大量的代码,而不是太多的代码。看看我的答案。尽管考虑一些有趣的问题,比如如何处理iframe、边界半径等,确实意味着要做更多的工作。这是一个很酷的方法,但它只返回点击次数最多的元素。提供的MDN文章对此很清楚。编辑:将演示移到外部页面,因为此示例中的代码片段环境太多。这正是我想要的,我将接受答案。据我所知,这是你能得到的最好的。谢谢