如何用js控制网页刷新后滚动条保持在原来的位置

如何用js控制网页刷新后滚动条保持在原来的位置,第1张

一般需要两个页面来实现,比如使用frame或者iframe,假设页面a中嵌有iframe,页面为b,你要实现iframe中的页面刷新后滚动条回到原来的位置,可以这样干:

1、在a页面中,新建个变量用于记录b页面的滚动条位置

var hScrollBarPos=0;

2、在b中写函数

<script type="text/javascript">

//向父页a传递滚动条位置,用于刷新时能够回复到原来位置

function sendScrollPos(){

parenthScrollBarPos=documentbodyscrollTop;

}

//下面这句b页面每次加载都会执行

windowscrollTo(0,parenttoolBarFramehScrollBarPos);

</script>

onload=function(){

    var changeBG=0,scrollTop=0;

    //设置原始变量

    setInterval(function(){

        scrollTop=documentbodyscrollTop

        if(changeBG&&scrollTop>200){  

        //判断是否更换了背景及滚动条是否到达指定高度      

            documentbodyscrollTop=0;           //转到页面顶部

            documentbodystylebackgroundImage="url()";

            //变换背景

            changeBG=1;

            //表示已经转换了背景

            setTimeout(function(){

            documentbodyscrollTop=changeBG

            //返回原来位置

            },1000)

        }

    },1000)

}

滚动条,顾名思义,就是可以滚动的条(ScrollBar)。准确地说,滚动条通常是我们在页面的内容超过了浏览器显示框的范围的时候,为了能够让有限的空间展示无限的内容所作出的一个妥协的元素,使用它可以让我们查看当前页面内容之外部分的内容。

说到这里您估计都还很清楚,但既然我说滚动条也是一个元素,那么它是不是也在我们的HTML中呢?又或者它是浏览器的固有的一部分?

如果您觉得它是HTML中的一部分,那么您就对了,因为它是依附容器而存在的,而默认产生滚动条的容器是<body></body>或者<html></html>节,它并不是浏览器固有的一部分,浏览器只是默认完整展示了一整个html文档,并不知道它中间的内容究竟是否需要滚动条的支持。

那么让我们回顾上面的那几行代码吧,假设fixed对您当前(失败)的浏览器无效的话,那么我们来看看它们的结构,外面是html标签,向内是body标签,再向内则是div标签,div标签很明显是它们的一部分,这样假设我们的div标签所设置的定位属性无论如何(四个可能的属性皆没起到什么作用)改变不了自身显示状况。我们能否更换一个思路呢?

刚才我说了,滚动条是容器所固有的,不管是外面那个滚动条,还是里面那个滚动条。那么我能否让这个需要固定的div和那个body或者html容器脱离关系呢?

看到滚动条的控制可以通过CSS的overflow的几个属性来控制,想必大家都不陌生了。(陌生的朋友点击相关链接即可进入查看)

那么我是否可以自己设置两个完全隔离的div来模拟这种场景呢?

<html>

02

<head>

03

<title></title>

04

<style type="text/css">

05

06

html,body {

07

overflow:hidden;

08

margin:0px;

09

width:100%;

10

height:100%;

11

}

12

13

virtual_body {

14

width:100%;

15

height:100%;

16

overflow-y:scroll;

17

overflow-x:auto;

18

}

19

20

fixed_div {

21

position:absolute;

22

z-index:2008;

23

bottom:20px;

24

left:40px;

25

width:800px;

26

height:40px;

27

border:1px solid red;

28

background:#e5e5e5;

29

}

30

</style>

31

</head>

32

33

<body>

34

<div class="fixed_div">I am still here!</div>

35

<div class="virtual_body">

36

<div style="height:888px;">

37

I am content !

38

</div>

39

</div>

40

</body>

41

</html>

网页可见区域宽: documentbodyclientWidth

网页可见区域高: documentbodyclientHeight

网页可见区域宽: documentbodyoffsetWidth (包括边线的宽)

网页可见区域高: documentbodyoffsetHeight (包括边线的高)

网页正文全文宽: documentbodyscrollWidth

网页正文全文高: documentbodyscrollHeight

网页被卷去的高: documentbodyscrollTop

网页被卷去的左: documentbodyscrollLeft

网页正文部分上: windowscreenTop

网页正文部分左: windowscreenLeft

屏幕分辨率的高: windowscreenheight

屏幕分辨率的宽: windowscreenwidth

屏幕可用工作区高度: windowscreenavailHeight

屏幕可用工作区宽度: windowscreenavailWidth

以上就是关于如何用js控制网页刷新后滚动条保持在原来的位置全部的内容,包括:如何用js控制网页刷新后滚动条保持在原来的位置、js如何判断滚动条位置,并更换背景、js 如何让滚动条自动定位到页面一半的位置,不要误差等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9539988.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存