首页 文章

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

提问于
浏览
0

Context

  • PARENT PAGE加载包含app / plugin的IFRAME

  • PARENT PAGE与IFRAME的域名不同

  • PARENT PAGE和IFRAME都安装了 iframeResizer 插件 - > iframe有 no scroll bar (所有内容都显示在父页面上) - IFRAME总是根据文档高度调整大小

  • PARENT PAGE html / js无法更改,只能更改IFRAME

Problem

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

DO NOT 的解决方案:

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

  • 来自iframe的 window.parent 的任何内容(无法访问)

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

Solutions that do work?

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

scroll problem

2 回答

  • 2

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

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

    请参阅codepen demo here .

    document.body.scrollIntoView();
    
  • 1

    这在Chrome和Mozilla中运行良好(IE不工作,为什么?)......但它似乎不是正确的方法 .

    DEMO Code pen demo

    • 在IFRAME中创建 input 字段

    • 设置INPUT的样式,使其对用户不可见

    • 从IFRAME中按 focusing 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();
    

相关问题