ページ内のすべての固定リンクの位置、高さ、幅を計算する必要があります。x、y座標を見つける方法は知っていますが、高さと幅に問題があります. この問題は、リンクの内部に子 (画像、div など) がある場合に発生するため、heightOffset と widthOffset は機能しません。すべての子に行ってサイズを計算せずにこれを行う方法はありますか?
編集:
私が何を意味するかを示すコードを次に示します (マウスが押されるたびにプレス関数が呼び出されます)。
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;
}
}
}
たとえば、画像を含むリンクに遭遇すると、正しいサイズが返されません。
ありがとう