使用 jQuery .offset() 查找 SVG 的位置在 safari 中不起作用

Posted

技术标签:

【中文标题】使用 jQuery .offset() 查找 SVG 的位置在 safari 中不起作用【英文标题】:Find position of an SVG with jQuery .offset() not working in safari 【发布时间】:2022-01-08 19:40:27 【问题描述】:

这段代码在 chrome 中运行良好

    $("#el").hover(function () 
    let position = $(this).offset();
    $('#popover').css(position);
    );

但是 offset() 总是在 safari 中返回这个:

top: 0, left: 0

#el 是一个 svg 圆

<circle id="el"  cx="500" cy="153" r="50"></circle>

这是 jQuery 的问题吗?

工作示例:https://jsfiddle.net/82syz54m/1/

在 chrome 中:

在 Safari 中:

【问题讨论】:

这有帮助吗? ***.com/questions/54790402/… 这似乎是同样的问题,但我找不到如何使解决方案适应我的用例 我在jsfiddle中添加了一个例子。 【参考方案1】:

以下代码兼容所有浏览器:

$("#el").hover(function () 
const circle = document.getElementById('el').getBoundingClientRect();
const position =  left: circle.left, top: circle.top ;
$('#popover').css(position);
console.log(position)
);

【讨论】:

以上是关于使用 jQuery .offset() 查找 SVG 的位置在 safari 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

查找页面中每个链接的坐标

jquery offset获取div的位置top和left数值

如何在不使用jQuery的情况下获取元素的offset()。top值?

kafka根据offset查找消息流程

jquery offset positon 获取位置不准的解决方法

jquery 中的 offset()