Avatar billede c-sharp Nybegynder
06. august 2007 - 10:32 Der er 16 kommentarer og
1 løsning

Problem med onbeforeunload og history.go()

Jeg har en side hvor en bruger kan vedligeholde nogle ting i en editor, for at brugeren ikke skal miste dine data hvis brugeren glemmer at gemme, så bruger jeg onbeforeunload til spørge brugeren om han er sikker på at han vil forlade siden.

Problemet er at jeg har en tilbage knap på siden som bruger javascript funktionen "histroy.go()", når man så trykker på tilbage, informere den rigtig nok brugeren om at der ikke er gemt, trykker man så "OK", kommer vinduet engang til for at informere om at man ikke har gemt. Trykker men så endnu engang ok får man lov at forlade side. Det sker kun når jeg bruger det javascript eller virke det fint, også selv om jeg bruger tilbage knappen i browseren.

Hvordan kna jeg undgå at få en "alert" 2 gange?
Avatar billede w13 Novice
06. august 2007 - 18:32 #1
Kan vi se koden, som du benytter i onbeforeunload?
Avatar billede c-sharp Nybegynder
07. august 2007 - 06:47 #2
Her et lille eksempel:

<body onbeforeunload="return 'vil du gemme?'">

    <a href="java script:history.go(-1)">Tilbage</a>
</body>
Avatar billede olebole Juniormester
07. august 2007 - 14:46 #3
<ole>

Det handler nok mere om, hvad du skal bruge den til - og hvordan  ;o)

/mvh
</bole>
Avatar billede c-sharp Nybegynder
07. august 2007 - 15:15 #4
Jeg skal bruge den for at sikre at en bruger ikke kommer til at forlade en side hvorpå han har lavet rettelser i en editor (CMS), uden at gemme rettelserne.
Avatar billede olebole Juniormester
07. august 2007 - 15:33 #5
Ja, det har vi også forstået  =)
Avatar billede c-sharp Nybegynder
08. august 2007 - 07:51 #6
Så er jeg ikke helt med på hvad i gerne vil vide for at kunne hjælpe mig?
Avatar billede olebole Juniormester
08. august 2007 - 13:22 #7
Vi mangler en mere præcis forklaring på, hvad der sker - og noget kode
Avatar billede c-sharp Nybegynder
08. august 2007 - 13:28 #8
Her er koden:

<body onbeforeunload="return 'vil du gemme?'">

    <a href="java script:history.go(-1)">Tilbage</a>
</body>

Og det der sker hvis du afvikler ovenstående kode i IE7, så kommer den confirm der spørg om du vil forlde siden 2 gange.
Avatar billede c-sharp Nybegynder
21. august 2007 - 09:04 #9
Er der mere hjæjp her?
Avatar billede olebole Juniormester
21. august 2007 - 12:22 #10
Prøv at lægge et link, så vi kan se, hvad der sker
Avatar billede c-sharp Nybegynder
22. august 2007 - 15:36 #11
Systemet ligger på et intranet og jeg har ikke mulighed for at linke til det, men det er rimelig nemt at frem provokere.

Kopiere min kode ind i en fil, start en browser og gå til en tilfældig side, skriv derefter stien på filen hvor i du har kopieret koden ind (Det er vigtigt at der er en side i history du kan gå tilbage til). Tryk så på tilbage nu vil alerten så komme 2 gange.
Avatar billede olebole Juniormester
22. august 2007 - 17:06 #12
Prøv at bruge onclick-handler'en i stedet for JavaScript pseudo-protokollen ... den er et levn fra WWW's stenalder og Netscape 2 - og er ofte noget skidt at bruge
Avatar billede olebole Juniormester
22. august 2007 - 17:07 #13
Ups:
    <a href="#" onclick="history.go(-1);return false">Tilbage</a>
Avatar billede c-sharp Nybegynder
23. august 2007 - 08:40 #14
Super det virker :-)!
Mange tak for hjælpen, ved du i øvrigt om man kan overskrive den standard tekst der er i den alert som "onbeforeunload" laver?

Smid svar så er der point!
Avatar billede w13 Novice
23. november 2007 - 00:00 #15
Ole?
Avatar billede c-sharp Nybegynder
12. december 2007 - 13:13 #16
Ole smid lige et svar
Avatar billede c-sharp Nybegynder
21. februar 2008 - 11:49 #17
lukker
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