首页 > 技术文章 > iframe中,页面转换后回到页面的顶部

lojun 2017-03-15 09:16 原文

看到网上有这样描述的:

  现在A页面内分为上下两个部分,上部分是top,下部分分左右,左是treeview右边是iframe,iframe内嵌一个B页面,B页面的内容实质上是个月刊,可以理解为杂志,里面有很多转向到其他页面的连接,问题来了。
如果现在我浏览A页面很长,浏览器滚动条在中间,当我点击B页面的某个连接时,iframe内的页面变了,但是A页面整体无变化,这时滚动条还是在中间的部位,造成的为题就是我看到的iframe里面的内容不是文章的头部,而有可能是直接看到中间部位甚至是尾部(因为我的iframe自适应高度,当文章高度低于iframe高度时他是会收缩的自然的浏览器也就在文章最底部了)。

  ①首先页面的首页是这样的:

 

  ②然后点击左下部分的“more”按钮,应该展示这样的页面效果,如下:

  ③但是实际上,展示的页面效果是这样的,如下:

  (1)有一个主页面A,A中嵌入一个iframe框架B,如下:

<body>
<div class="main_body">
        <!--logo-->
        <img class="logo" src="static/images/logo2.png" alt="江苏分中心">
        <!--menu-->
        <div class="main-menu">
            <a href="#" name="link" class="current" onclick="opIframePage(this,'home');">0</a>
            <a href="#" name="link" id="news" onclick="opIframePage(this,'news');">1</a>
            <a href="#" name="link" onclick="opIframePage(this,'train');">2</a>
            <a href="#" name="link" onclick="opIframePage(this,'auth');">3</a>
            <a href="#" style="background: orange; color:#fff;" onclick="regist();">4</a>
        </div>
        <div>
            <iframe id="iframePage" style="width: 100%;height: 1000px;overflow-y:scroll;" frameborder="0">
            
            </iframe>
        </div>
        <footer>
            <p>fgd</p>
        </footer>
    </div>
</body>

  打开iframe中的页面:document.getElementById("iframePage").src =url;
  (2)如果我打开的B页面后,主体页面位于中部或者底部,这就不符合用户的习惯了

   如何改变?

  方法一:在父页面做手脚:

function topTo(){
  document.getElementById(‘iframePage’).scrollIntoView();
}

    其中iframePage是你要定位在页面顶部的元素id,然后在子页面中调用父级页面的方法,parent.topTo();

  方法二:直接在子页面中写方法:parent.scrollTo(0,0);

    这样就可以显示②步的效果了。

推荐阅读