【发布时间】:2018-10-30 03:05:27
【问题描述】:
我有一个函数来评估元素(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;
}
当直接在页面上提供时,此函数可以正常工作,但在实时环境中,当此函数运行时,它位于 iFrame 内,看起来getBoundingClientRect() 引用的是 iFrame 的视口而不是主窗口?
有什么方法可以在带有getBoundingClientRect() 的 iFrame 中使用主窗口视口
【问题讨论】:
标签: javascript iframe cross-domain getboundingclientrect