jQuery position()在Safari中返回零

时间:2019-01-24 18:15:19

标签: javascript jquery svg safari

我使用position()getBoundingClientRect()来确定svg对象在视口中是否可见。在Chrome,Firefox和EDGE上可以很好地运行,但在Safari上则不能。

obj.position()始终在Safari中返回{top: 0, left: 0}

怎么了?

options.elements.forEach(function (item) {                        
    let obj = jQuery("#" + item);

    if (!!obj && !!obj[0]) {
        let position = obj.position();
        let box = obj[0].getBoundingClientRect()

        if (!!position) {
            if (position.left <= left + width &&
                position.left + box.width >= left &&
                position.top <= top + height &&
                position.top + box.height >= top)
                 onscreen.push(item);
        }
    }
});

这是HTML的一部分。我省略了svg的'd'内容

<div id="svgmap">
<svg id="svg">
<g id="R918">
    <path d="...." transform="translate(-0.08 0.25)"//>
  </g>
  <g id="C902J">
    <path d="...."  transform="translate(-0.08 0.25)"/>
  </g>
  <g id="C9002I">
    <path d="" transform="translate(-0.08 0.25)"/>
  </g>
</svg>

1 个答案:

答案 0 :(得分:-1)

好的,所以我没有弄清楚为什么在这种特殊情况下position()在Safari中不起作用,但是我意识到我根本不需要使用position()。我可以从getBoundingClientRect()。left和getBoundingClientRect()。top获取相同的数据