Avatar billede stenmadsen Nybegynder
20. februar 2005 - 23:28 Der er 4 kommentarer

History gemmes ikke når næste side er word der åbnes i browser

Jeg har et irriterende problem. I min applikation kan man vælge at få en rapport i RTF-format. Hvis brugeren vælger at åbne RTF-rapporten i browseren (istedet for at download'e) vil det resultere i at word åbner i browser vinduet. Når brugeren herefter trykker på browserens (IE6) tilbageknap hoppes to htmlsider baglæns. Det vil sige, at siden hvor man bl.a. kan vælge RTF-rapporten ikke gemmes i browserens history! Vælger jeg istedet at genere rapporten som HTML er der ingen problemer. I hele applikation bruger jeg method=post, og alle sider incl. RTF-rapporter dannes ved at submit en form.

Er der nogen der har en forklaring på dette. Jeg synes det ligner en bug. Er løsningen at gemme sidens url incl sessionid m.m. i location.href eller er der en mere elegant måde?
Avatar billede olebole Juniormester
21. februar 2005 - 00:29 #1
<ole>

Det er ikke en fejl. Dokumentet er åbnet i Word - ikke som du tror i din browser. Derfor er dette dokument naturligvis heller ikke at finde i browserens history-objekt.

En løsning kunne ganske rigtigt være at konstruere sin egen historik i f.eks. en session

/mvh
</bole>
Avatar billede stenmadsen Nybegynder
22. februar 2005 - 01:25 #2
Jeg har fundet en simpel løsning. Ved at ændre formens "method" fra post til get umiddelbart før jeg kalder submit() gemmes html-sidens url i history. Når fra jeg derefter benytter browserens tilbageknap, kommer jeg tilbage til html-siden der udførte submit(). Jeg synes det er lidt underligt, at IE håndtere history forskelligt ved post og get. Det ville unægtelig spare en del tid, hvis sådanne 'features' var dokumenteret.
Avatar billede olebole Juniormester
22. februar 2005 - 02:04 #3
Nu er jeg forvirret ... det er da ikke noget problem at gemme en side i history'en ved post:
    http://www.tjenester.dk/x-codes.dk/eksperten/posttest/

Fejlen må opstå på anden måde. Redirect'er du via en HTTP-Header i PHP - eller skriver du dokumentet dynamisk ud med PHP ... og i så fald, sætter du så Content-Type feltet i HTTP-Header'en på dokumentet?
Avatar billede stenmadsen Nybegynder
22. februar 2005 - 11:36 #4
Nej, det er helt lige ud af landevejen. Alle sider kaldes på samme måde. Den eneste forskel, er at sidens HTTP-header ændres når RTF-rapporten sendes til klient. Min mistanke er, at det er  kombinationen af HTTP-header og request metode der er problemet. Det kunne se ud som om at IE6 tror at den åbne et nyt browservindue når metoden er post og HTML-headeren sættes til Content-type: application/octet-stream/RTF Content-disposition: filename=rapport.RTF, men ikke når metoden er get
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