scrollIntoView仅适用于IFRAME

时间:2014-01-06 18:25:33

标签: javascript iframe scroll

我在一个带有scollbars的页面中有一个元素,通过JS调用element.scrollIntoView()在页面加载时进入视图 - 这正如预期的那样工作正常。

现在,如果我将此页面放入IFRAME,对element.scrollIntoView()的调用不仅会将iframe中的元素带到iframe的顶部 - 如果父页面具有自己的滚动条 - 它会滚动父页面以及将有问题的元素也带到父页面的顶部。

我理解这可能是设计行为,但有没有办法只将“scrollIntoView”行为包含在IFRAME中,或者是否有任何替代方法可以有这种行为(不影响父页面)。

3 个答案:

答案 0 :(得分:10)

Figured it out。我可以将元素的父级scrollTop设置为元素自己的offsetTop。这将使父级滚动到元素的位置,效果将是IFRAME的本地。

答案 1 :(得分:1)

上述解决方案确实有效,但您将无法应用平滑滚动行为。遇到了同样的问题,并认为您实际上可以通过使用 scrollTo 来修复,然后您就可以添加平滑滚动。

假设 containerelement 分别是固定大小容器的 DOM 元素和要滚动到的元素:

container.scrollTo({
    top: element.offsetTop,
    behavior: 'smooth',
  })

然后由您来选择是使用 jQuery 还是引用来获取给定的 DOM 元素。

答案 2 :(得分:0)

如何?

window.parent.scrollTo(0,0);