【问题标题】:How to force an iframe's parent page to scroll to top automatically when the user navigates in the iframe?当用户在 iframe 中导航时,如何强制 iframe 的父页面自动滚动到顶部?
【发布时间】:2014-09-27 14:45:58
【问题描述】:

*请注意:跨域场景*

我有一个 iframe,它有 no 滚动条,但比浏览器窗口高得多,因此垂直滚动由浏览器的主垂直滚动条完成。然而,这有一个令人不安的特性:当导航在向下滚动状态下完成时,滚动不会重置到父级的顶部。

我想在 iframe 中发生页面导航时自动将此滚动重置为初始顶部状态。

提前致谢。

【问题讨论】:

    标签: javascript cross-domain


    【解决方案1】:

    如果您的 iframe 存在跨域问题(指向您网站以外的其他地方),您不能:
    error : Permission denied to access property 'document'

    但如果没有,您可以使用此代码进行操作。将此添加到页面中的脚本中:

    var myframe = window.frames[0].window;
    myframe.onscroll = function(){if(myframe.scrollY == myframe.scrollMaxY){window.scrollTo(0,0);}};
    //Thanks Diodeus!
    

    或者您可以通过getElementById 或其他类似方式选择它并引用myframe 变量。当您在 iframe 中向下滚动然后向上滚动整个文档时,这会触发一个事件。

    【讨论】:

      【解决方案2】:

      您可以将onload 事件挂钩到 iframe。它是您在跨域场景中可以获得的少数钩子之一。

      document.getElementById("some_iframe").onload = function (){ window.scrollTo(0,0); }
      

      【讨论】:

      • 不幸的是,我无法访问父页面。它是其他域中的其他提供商的其他应用程序
      • 啊。我以为你在管理父页面,而不是 iframe。
      猜你喜欢
      • 2017-10-03
      • 1970-01-01
      • 2017-12-07
      • 1970-01-01
      • 2016-09-13
      • 2014-09-14
      • 1970-01-01
      • 2011-04-17
      相关资源
      最近更新 更多