Avatar billede skovgaard3 Nybegynder
09. maj 2003 - 16:24 Der er 24 kommentarer og
1 løsning

Opdatere vindue og beholde scrollbarpositionerne

Hej.

Hvis man almindeligvis vil opdatere sin side bruger man bare "location.reload(false)".
Men kan man ikke beholde scrollbarpositionen?
Ligesom når man trykker på opdater knappen i IE.

Hilsen Claus.
Avatar billede roenving Novice
09. maj 2003 - 16:34 #1
Tror det ikke -- reload skulle betyde, at siden skrives helt forfra, så hvis man skulle genfinde scroll-positionen skulle det være via browseren (og onLoad) !-|
Avatar billede olebole Juniormester
09. maj 2003 - 18:12 #2
<ole>

Joohhh .... det kan man nu godt  :)
Hvordan skal du udløse den reload? Ved tryk på et link, eller ...?

/mvh
</bole>
Avatar billede olebole Juniormester
09. maj 2003 - 18:20 #3
.... er det evt. til en chat?
Avatar billede skovgaard3 Nybegynder
09. maj 2003 - 18:29 #4
Det er ikke til en chat.

Det er et pop-up vindue, der med en submit-knap kalder en side der gemmer ændringer som derefter opdaterer hovedvinduet (med opener.document.location.reload()) og lukker pop-up vinduet.

I hovedvinduet er der en lang liste med navne i en tabel som fylder mere end vinduet, og hvert navn har et link som kalder pop-up vinduet.
Når ændringer så er gennemført skulle hovedsiden så gerne opdateres (på samme scrollposition)

-Claus
Avatar billede olebole Juniormester
09. maj 2003 - 18:48 #5
Så må jeg lige vide, om din 'hovedside' er kaldt med post- eller get-argumenter, når den loades i browseren?
Jeg vil også gerne vide, om den ligger i en frame eller iframe  :)
/mvh
Avatar billede olebole Juniormester
09. maj 2003 - 18:49 #6
Ja, du må undskylde, men det er en lidt tricky sag at lave, så der er lige nogle ting, vi må have afklaret, inden jeg kan give dig en brugbar løsning  :)
/mvh
Avatar billede skovgaard3 Nybegynder
09. maj 2003 - 19:00 #7
OK, øhm, min hovedside bliver ikke kaldt med nogen argumenter.
Der er hverken frames eller iframes.

Siden er denne: http://cls.mine.nu/reminder.dk
log ind med temp/temp
I menuen "påmindelser" -> "Vis alle" ser du nu hovedvinduet.
Hvis du trykker på et navn kommer der en pop-up.
Avatar billede skovgaard3 Nybegynder
09. maj 2003 - 19:12 #8
Her er hvad der sker i detaljer:
1. Hovedvinduet "http://cls.mine.nu/reminder.dk/reminder.asp?side=datoer" åbnes.
2. Når et navn "klikkes" åbnes et pop-up vinduet med en adresse ala "http://cls.mine.nu/reminder.dk/visDato.asp?id=117"
3. Når knappen "gem ændringer" klikkes ryger der en POST til sysretdato.asp som derefter har ansvaret for at opdatere hovedvinduet og lukke sig selv.
4. Når knappen "Slet påmindelse" klikkes kaldes en URL ala "syssletdato.asp?id=117" som derefter har ansvaret for at opdatere hovedvinduet og lukke sig selv.

Håber det hjælper på forståelsen. Hvis det er så besværligt som det lyder til, er der ingen grund til at ofre så meget på det. Så vigtigt er det jo heller ikke.
Avatar billede olebole Juniormester
09. maj 2003 - 19:17 #9
Okay ... du skriver din funktion 'showDate()' om til:

var myScroll;
function showDate(id) {
    if (window.pageYOffset) {
        myScroll = window.pageYOffset;
    }
    else if (document.documentElement && document.documentElement.scrollTop) {
        myScroll = document.documentElement.scrollTop;
    }
    else if (document.body) {
        myScroll = document.body.scrollTop;
    }
    window.open("visDato.asp?id="+id+"&newscroll="+myScroll, "Detaljer","toolbar=no,menubar=no,position=absolute,top=100,left=100,width=450,height=450");
}

Nu kan du i popUp'en hente værdien af 'newscroll' ud. Den indeholder det antal px, din side var scrollet ned, da linket blev klikket.

Derefter refresh'er du (fra popUp'en) hovedsiden med:
  opener.location.href = "http://cls.mine.nu/reminder.dk/reminder.asp?side=datoer&newscroll=" + newscroll;

I hovedsiden skal der desuden ligge denne funktion, der sørger for, at siden scrolles ned til den rigtige position, hvis den kaldes med et argument, der hedder 'newscroll':

window.onload = function() {
    if ( location.href.indexOf("?")!=-1 ) {
        var newScroll, q = location.href.split("?")[1];
        if ( q.indexOf("newscroll")!=-1 ) {
            newScroll = q.split("newscroll=")[1];
            scrollTo(0, newScroll);
        }
    }
}

/mvh
Avatar billede olebole Juniormester
09. maj 2003 - 19:20 #10
Men da jeg i dit sidste indlæg kan se, du skifter side i din popUp, må du skrive et hidden-field, der hedder 'newscroll', hvori du indskriver værdien af samme variabel - som popUp'en jo blev kaldt med  :)
/mvh
Avatar billede olebole Juniormester
09. maj 2003 - 19:23 #11
Du kan se et lidt simplere eksempel, jeg har hjulpet en bekendt med:
  http://pspgrafik.dk/medlem/index.php?tid=127
Scroll ned i bunden og tryk 'Opdater'.

Her bliver scroll-distancen gemt i en variabel oppe i framesettets head og aflæst på onload  :)
Avatar billede skovgaard3 Nybegynder
09. maj 2003 - 19:24 #12
Ok.
Dvs. at jeg også skal lave min slet-knap om til en form, så jeg også kan sende "myScroll" med over til slet-siden. Ligesom rettesiden.

Jeg prøver at implementere det. Melder tilbage lidt senere.
Mange tak for hjælpen indtil videre.

-Claus
Avatar billede olebole Juniormester
09. maj 2003 - 19:26 #13
... anytime  ;o)
Avatar billede olebole Juniormester
09. maj 2003 - 19:31 #14
Bare sig til, hvis ....... ehhhhhhh ...... når du får problemer  ;o)
Avatar billede Slettet bruger
09. maj 2003 - 19:36 #15
Hej Ole jeg har sendt dig en mail ;)
Avatar billede olebole Juniormester
09. maj 2003 - 19:37 #16
HHmmm .... jeg har ikke fået den. Prøv igen  :)
/mvh
Avatar billede Slettet bruger
09. maj 2003 - 20:00 #17
ok, jeg har sendt den igen, ca. 20 min. siden nu. Håber du modtager den denne gang.
Avatar billede skovgaard3 Nybegynder
09. maj 2003 - 20:47 #18
Der kom ingen problemer ole.. Det virker perfekt nu. Det er jo det at få hentet scrollværdien og sat den igen der er essensen i det hele.
Tak for hjælpen, og smid et svar.

Hilsen Claus.
Avatar billede olebole Juniormester
09. maj 2003 - 21:32 #19
Det lyder fint, Claus. Folks kodeevner ligger jo på mange niveauer her på sitet, så du må ikke tage (09/05-2003 19:31:24) som en fornærmelse  ;o)
Men du har da helt ret ... det er jo bare variabel-jonglering, når først man har fat i værdien og ved, hvordan den skal bruges tilslut  :)
/mvh
Avatar billede skovgaard3 Nybegynder
09. maj 2003 - 21:42 #20
Jeg tog det ikke som en fornærmelse, selv om det måske godt kunne opfattes sådan. ;)
Til gengæld vil jeg gerne spørge dig hvor du finder ud af, at hvis man fx. skal have scroll-værdien, at det så er 'window.pageYOffset' el. 'document.body.scrollTop' man skal kalde. Og at der lige er en  standardmetode der hedder 'scrollTo()'

Er det ting du bare ved, eller står det i en bog el. på nettet et sted?
Altså findes der en oversigt over alt hvad der er af standardmetoder og properties til javascript i IE eller NetScape.
Avatar billede olebole Juniormester
09. maj 2003 - 23:02 #21
Forlaget O'Reilly har udgivet en kanon god JavaScript-reference på 6-700 sider.
Derudover er der Netscapes referencer og manualer (NS sætter - på grundlag af ECMA-standarden for scripting-sprog - standarden for JavaScript):
  http://devedge.netscape.com/central/javascript/

Samt MS's standard for JScript (MS implementering af ECMA-script):
  http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/js56jslrfJScriptLanguageReference.asp

Og deres DHTML-reference (hovedsagelig gældende for IE):
  http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/dhtml_reference_entry.asp

Det er, hvad jeg selv primært bruger  :)
/mvh
Avatar billede olebole Juniormester
09. maj 2003 - 23:03 #22
Nåja .... og så naturligvis W3C's rekommendationer for Document Object Model:
  http://www.w3.org/DOM/
Avatar billede olebole Juniormester
09. maj 2003 - 23:10 #23
Ikke mindst:
  http://www.w3.org/DOM/DOMTR

Går du her ind under "DOM Level 1", finder du et link til "Appendix D: ECMA Script Language Binding":
  http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/ecma-script-language-binding.html

Her finder du også en bunke _meget_ relevant viden. Du bør også checke samme ECMA-bindings for Level2 og 3.

Så er du zq dækket meget godt ind  :)
/mvh
Avatar billede skovgaard3 Nybegynder
10. maj 2003 - 07:18 #24
Det ser godt ud.
tak for hjælpen ole.
-CS
Avatar billede olebole Juniormester
10. maj 2003 - 15:35 #25
... anytime  ;o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester