我需要计算页面中每个锚定链接的位置、高度和宽度。我知道如何找到 x,y 坐标,但我对高度和宽度有疑问。当链接内部有子项(图像、div 等)时会出现问题,因此 heightOffset 和 widthOffset 将不起作用。有没有办法做到这一点,而不需要对所有孩子进行计算并计算他们的大小?
编辑:
这是一些代码来演示我的意思(只要按下鼠标,就会调用 press 函数):
function findPos(obj) {
var curleft = curtop = 0;
if (obj.offsetParent) {
do {
curleft += obj.offsetLeft;
curtop += obj.offsetTop;
} while (obj = obj.offsetParent);
}
return [curleft,curtop];
}
function getHeight(elem) {
if (elem.style.pixelHeight) {
return elem.style.pixelHeight;
} else {
return elem.offsetHeight;
}
}
function getWidth(elem) {
if (elem.style.pixelWidth) {
return elem.style.pixelWidth;
} else {
return elem.offsetWidth;
}
}
function press(e)
{
x= e.pageX;
y= e.pageY;
window.alert(x+","+y);
var links = document.getElementsByTagName('a');
for (i = 0; i < links.length; i++){
var pos = findPos(links[i]);
window.alert(x+","+y+" "+pos[0]+" " + pos[1] + " "+links[i].offsetWidth+ " "+links[i].offsetHeight);
if (x >= pos[0] && x <= pos[0] + getWidth(links[i]) && y >= pos[1] && y <= pos[1] + getHeight(links[i])){
window.alert(links[i].href);
i = links.length;
}
}
}
例如,当我遇到带有图像的链接时,它不会返回正确的尺寸。
谢谢