[JavaScript] DIV scrollpositie werkt niet altijd

Pagina: 1
Acties:

  • Swerfer
  • Registratie: Mei 2003
  • Laatst online: 05-05 07:31
Onderstaand script moet ervoor zorgen dat na een postback de scrollpositie van zowel het hele window als van een DIV bewaard blijft.

Die van het hele window werkt prima, die van de DIV werkt alleen als de scrollpositie van het hele window geen waarde heeft (ofwel niet bestaat, geen scrollbar)...
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<form ID="Form1">
 <div ID="Layout">

blahblah

</div>

blahblah

<input id="FormScrollPosX" type="hidden" runat="server" NAME="FormScrollPosX">
<input id="FormScrollPosY" type="hidden" runat="server" NAME="FormScrollPosY">
<input id="DivScrollPosX" type="hidden" runat="server" NAME="DivScrollPosX">
<input id="DivScrollPosY" type="hidden" runat="server" NAME="DivScrollPosY">
<script language = "javascript">
    <!--
        function GetCoords()
            {
            var FormScrollX, FormScrollY, DivScrollX, DivScrollY;
            if (document.all)
                {
                if (!document.documentElement.scrollLeft)
                    FormScrollX = document.body.scrollLeft;
                else
                    FormScrollX = document.documentElement.scrollLeft;
                if (!document.documentElement.scrollTop)
                    FormScrollY = document.body.scrollTop;
                else
                    FormScrollY = document.documentElement.scrollTop;
                }
            else
                {
                FormScrollX = window.pageXOffset;
                FormScrollY = window.pageYOffset;
                }
            DivScrollX = document.getElementById("Layout").scrollLeft;
            DivScrollY = document.getElementById("Layout").scrollTop;
            document.forms.form1.FormScrollPosX.value = FormScrollX;
            document.forms.form1.FormScrollPosY.value = FormScrollY;
            document.forms.form1.DivScrollPosX.value = DivScrollX;
            document.forms.form1.DivScrollPosY.value = DivScrollY;
            }
        function Scroll()
            {
            var x = document.forms.form1.FormScrollPosX.value;
            var y = document.forms.form1.FormScrollPosY.value;
            window.scrollTo(x, y);
            document.getElementById("Layout").scrollLeft = document.forms.form1.DivScrollPosX.value;
            document.getElementById("Layout").scrollTop = document.forms.form1.DivScrollPosY.value;
            }
        window.onload = Scroll;
        window.onscroll = GetCoords;
        window.onclick = GetCoords;
        window.onkeypress = GetCoords;
        document.getElementById("Layout").onscroll = GetCoords;
        document.getElementById("Layout").onclick = GetCoords;
        document.getElementById("Layout").onkeypress = GetCoords;
    // -->
</script>
</form>

Hoe kan ik ervoor zorgen dat de scrollpositie van de div ook behouden blijft als de scrollpositie van het window een waarde heeft?

Home Assistant | Unifi | LG 51MR.U44 | Volvo EX30 SMER+ Vapour Grey, trekhaak | SmartEVSE V3 | Cronos Crypto.com


  • Swerfer
  • Registratie: Mei 2003
  • Laatst online: 05-05 07:31
Ik heb al een manier gevonden. Ik heb de GetCoords functie opgesplitst in 2 aparte functies voor zowel de window als de div...
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<script language = "javascript">
    <!--
        function FormGetCoords()
            {
            var FormScrollX, FormScrollY, DivScrollX, DivScrollY;
            if (document.all)
                {
                if (!document.documentElement.scrollLeft)
                    FormScrollX = document.body.scrollLeft;
                else
                    FormScrollX = document.documentElement.scrollLeft;
                if (!document.documentElement.scrollTop)
                    FormScrollY = document.body.scrollTop;
                else
                    FormScrollY = document.documentElement.scrollTop;
                }
            else
                {
                FormScrollX = window.pageXOffset;
                FormScrollY = window.pageYOffset;
                }
            document.forms.form1.FormScrollPosX.value = FormScrollX;
            document.forms.form1.FormScrollPosY.value = FormScrollY;
            }
            
        function DivGetCoords()
            {
            DivScrollX = document.getElementById("Layout").scrollLeft;
            DivScrollY = document.getElementById("Layout").scrollTop;
            document.forms.form1.DivScrollPosX.value = DivScrollX;
            document.forms.form1.DivScrollPosY.value = DivScrollY;
            }
            
        function Scroll()
            {
            var x = document.forms.form1.FormScrollPosX.value;
            var y = document.forms.form1.FormScrollPosY.value;
            window.scrollTo(x, y);
            document.getElementById("Layout").scrollLeft = document.forms.form1.DivScrollPosX.value;
            document.getElementById("Layout").scrollTop = document.forms.form1.DivScrollPosY.value;
            }
            
        window.onload = Scroll;
        window.onscroll = FormGetCoords;
        document.getElementById("Layout").onscroll = DivGetCoords;
    // -->
</script>

Home Assistant | Unifi | LG 51MR.U44 | Volvo EX30 SMER+ Vapour Grey, trekhaak | SmartEVSE V3 | Cronos Crypto.com