繁体   English   中英

从具有不同于父域的域的iFrame滚动到iframe的顶部窗口

[英]Scroll window to top of Iframe from iFrame with different domain than parent

内容

  1. 父页面加载包含应用程序/插件的IFRAME
  2. 父页面与IFRAME具有不同的域
  3. 父页面和IFRAME都已经安装了iframeResizer插件-> iframe 没有滚动条 (所有内容都显示在父页面上)-IFRAME始终根据其文档高度调整大小
  4. 父页面html / js 不能更改 ,只能更改 IFRAME

问题

如果用户位于IFRAME的底部并执行操作,那么如何在IFRAME的顶部滚动用户?

解决方案, 工作:

  1. window.scrollTo(0,0); // from iframe

  2. 来自iframe的带有window.parent所有内容(无法访问)

  3. 在iframe主体顶部使用锚点并重写window.location

有效的解决方案?

  1. 将发布一个作为答案(可以,但是很奇怪...对于IE不利)

滚动问题

您可以尝试使用document.body.scrollIntoView()

它应该可以在IE8 +和其他浏览器上运行(我仅在Chrome,FF和IE11中对其进行了测试)

在此处查看codepen 演示

document.body.scrollIntoView();

在Chrome&Mozilla(IE无法正常工作,为什么?)中,这可以很好地工作……但这似乎不是正确的方法。

演示 代码笔演示

  1. 在IFRAME中创建一个input字段
  2. 设置输入样式,以使其对用户不可见
  3. 通过集中 IFRAME的input来滚动父页面
// IFRAME JS
    // initialize a "scroller" object
    var scrollPage = (function(){
        var input = document.createElement("input");
        input.style.position="absolute";
        input.style.top="-50px";
        document.body.insertBefore(input, document.body.firstChild);
        return function(){
            input.focus();
        };
    })();
    // use the "scroller" when needed
    scrollPage();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM