Javascript 查找区域内的所有元素
如果我想找到盒子区域内的所有元素,作为Firefox扩展,最好的方法是什么?如果我检查所有leave元素并调用getBoundingClientRect(),那么速度太慢了,因为一个页面上很容易有500多个leaveJavascript 查找区域内的所有元素,javascript,firefox-addon,Javascript,Firefox Addon,如果我想找到盒子区域内的所有元素,作为Firefox扩展,最好的方法是什么?如果我检查所有leave元素并调用getBoundingClientRect(),那么速度太慢了,因为一个页面上很容易有500多个leave 任何帮助都将不胜感激。谢谢。您可以使用document.element frompoint访问每五个像素(每五个像素比访问每一个像素快得多),将找到的每个元素添加到数组中: function getElementsInRegion(x, y, width, height) {
任何帮助都将不胜感激。谢谢。您可以使用
document.element frompoint
访问每五个像素(每五个像素比访问每一个像素快得多),将找到的每个元素添加到数组中:
function getElementsInRegion(x, y, width, height) {
var elements = [],
expando = +new Date,
cx = x,
cy = y,
curEl;
height = y + height;
width = x + width;
while ((cy += 5) < height) {
cx = x;
while (cx < width) {
curEl = document.elementFromPoint(cx, cy);
if ( curEl && !curEl[expando] ) {
curEl[expando] = new Number(0);
elements.push(curEl);
cx += curEl.offsetWidth;
} else {
cx += 5;
}
}
}
return elements;
}
函数getElementsInRegion(x、y、宽度、高度){
var元素=[],
expando=+新日期,
cx=x,
cy=y,
curEl;
高度=y+高度;
宽度=x+宽度;
而((cy+=5)<高度){
cx=x;
而(cx<宽度){
curEl=document.elementFromPoint(cx,cy);
if(curEl&!curEl[expando]){
curEl[expando]=新编号(0);
元素。推(curEl);
cx+=curEl.offsetWidth;
}否则{
cx+=5;
}
}
}
返回元素;
}
谢谢。但是有没有办法让document.elementFromPoint返回第二个最上面的元素呢?我的加载项在顶部添加了另一层,因此document.elementFromPoint将返回该层。您可以暂时隐藏您的层(
display:none;
),然后运行该函数。非常感谢J-P提供的elementFromPoint(),我只是在寻找它。我的加载项在顶部添加了一层,所以我感兴趣的元素是排名第二的元素。