7

我需要确定 iframe 中的元素是否在屏幕上可见。(如果它在屏幕的可见部分)我的意思是页面可能很长,用户必须滚动才能看到元素

索引.html:

<html>
...
...
<iframe src="iframe.html" />
...
...
</html>

iframe.html:

<html>
...
...
<div id="element"></div>
....
...
<script type="text/javascript">
    var el = document.getElementById('element');
    if (isElementVisible(el)) {
      // do something
    }
</script>
</html>

怎么写这样的函数isElementVisible()?

4

1 回答 1

3

这是您要实现的目标的示例。

Working example

Just the iframe

基本上,这是应该进入你的函数iframe

function isElementVisible(element)
{
    var elementPosition = element.offset().top;
    var currentScroll = window.parent.$("iframe").contents().scrollTop();
    var screenHeight = window.parent.$("iframe").height();
    var visibleArea = currentScroll + screenHeight;
    return (elementPosition < visibleArea);
}

使用滚动事件处理程序触发您的检查。

$(window).scroll(function(){
if( isElementVisible( element ) )
   // Perform your code.
});

假设 iframe 与父框架位于同一域中,则此方法有效。为方便起见,我使用jQuery

于 2013-03-06T15:13:48.110 回答