小编Jon*_*eux的帖子

从 iFrame 中 getBoundingClientRect

我有一个函数来评估一个元素(一个 iFrame)是否在视口内,如果该元素在视图中它返回 true。

function isElementInViewport() {
    var el = document.getElementById('postbid_if')
    var rect = el.getBoundingClientRect();
    var elemTop = rect.top;
    var elemBottom = rect.bottom;

    console.log("eleTom " + elemTop)
    console.log("elemBottom " + elemBottom)
    console.log("window.innerHeight " + (window.innerHeight + (window.top.innerHeight * 0.5)))

    var isVisible = (elemTop >= 0) && (elemBottom <= (window.innerHeight + window.innerHeight * 0.5));
    return isVisible;
}
Run Code Online (Sandbox Code Playgroud)

当直接在页面上提供时,此函数可以正常工作,但在实时环境中,当此函数运行时,它位于 iFrame 内,并且看起来像是getBoundingClientRect()在引用 iFrame 的视口而不是主窗口?

有什么方法可以在 iFrame 中使用主窗口视口 getBoundingClientRect()

javascript iframe cross-domain getboundingclientrect

4
推荐指数
1
解决办法
2467
查看次数