从iFrame滚动窗口到iframe的顶部,其中域名不同于父级

时间:2017-11-12 14:25:44

标签: javascript iframe

上下文

  1. PARENT PAGE加载包含app / plugin的IFRAME
  2. PARENT PAGE与具有不同的域
  3. PARENT PAGE和IFRAME都安装了iframeResizer插件 - > iframe有无滚动条(所有内容都显示在父页面上) - IFRAME总是根据文档高度调整大小
  4. PARENT PAGE html / js 无法更改,只有IFRAME
  5. 问题

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

    的解决方案:

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

    2. 来自iframe的window.parent(无法访问)

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

    4. 有效的解决方案?

      1. 将张贴一个作为答案(它有效,但它很奇怪......对IE不好)
      2. scroll problem

2 个答案:

答案 0 :(得分:2)

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

它应该适用于IE8 +和其他浏览器(我只在Chrome,FF和IE11中测试过)

请参阅codepen demo here

document.body.scrollIntoView();

答案 1 :(得分:1)

这适用于Chrome& Mozilla(IE不工作,为什么?)......但它似乎不是正确的方法。

DEMO Code pen demo

  1. 在IFRAME中创建input字段
  2. 设置INPUT的样式,使其不可见给用户
  3. 通过关注来自IFRAME的input来滚动父页
  4. 
        // 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();