Avatar billede angelenglen Nybegynder
25. juli 2005 - 15:31 Der er 12 kommentarer og
1 løsning

showModalDialog cacher - det skal den ikke.

jeg har en side med en liste, hvor brugeren har mulighed for at omdøbe titlen på denne listen.

Den side der indeholder formen til at omdøbe, åbner jeg vha. showModalDialog - men indholdet bliver cachet!?!?

-Dvs hvis jeg eksempelvis har indholdet "test 1234" og klikker omdøb - så indeholder mit input felt "test 1234" - så sletter jeg indholdet og skriver "hejsa" - og gemmer - derefter vises "hejsa" i listen istedet for - dvs det blev omdøbt korrekt - databasen blev altså opdateret... Hvis jeg så klikker omdøb på "hejsa" står der igen "test 1234" i input feltet - og ligemeget hvad, så bliver der ved med det - indholdet af dialog'en er altså cachet...

kan det ikke lade sig gøre til at tvinge sin dialog til at reloade indholdet?

-Hvis jeg loader omdøb-filen direkte på url'en fungerer den perfekt, det er kun når jeg åbner den i en dialog-boks at det cacher...

Det er ret frustrerende, for det er ret smart med sådan en dialog, istedet for en almindelig popup (som for mange brugere har problemer med at popup stoppere blokerer)
Avatar billede angelenglen Nybegynder
25. juli 2005 - 15:35 #1
jeg har prøvet at indsætte følgende kode i <head></head> uden at det har hjulpet :-(

<META HTTP-EQUIV="Expires" CONTENT="Fri, Jun 12 1981 08:20:00 GMT">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
Avatar billede roenving Novice
25. juli 2005 - 15:47 #2
Kan du ikke bare sætte en input-tømmer ind i det dokument, du viser i boksen ?-)

onload="feltId.value='';"

-- og så er du selvfølgelig klar over, at brugen af den slags forhindrer andre end IE-brugere i at se noget fornuftigt, så det skal man have en strategi for !-)
Avatar billede angelenglen Nybegynder
25. juli 2005 - 16:07 #3
well egentligt ville jeg gerne have indhold, det skal bare være det korrekte indhold.

-Grunden til jeg gerne vil have indhold, er at hvis det f.eks står
"Dette er et punkt på listen med identifinations nummer 234452343242523"
-så ville det være træls at skulle skrive hele den smørre igen, blot for at ændre det sidste 3-tal til et 4-tal eller noget i den stil...

-det er jo et spørgsmål om brugervenlighed :-)

vedr. at det kun er IE kompatibelt, så checker jeg i min funktion der åbner dialog boksen, og viser en almindelig popup hvis det ikke er IE :-)
Avatar billede roenving Novice
25. juli 2005 - 16:13 #4
-- så kan du jo overføre værdien med kaldet af showModalDialog, og så indsætte værdien på samme måde:

var dlg = window.showModalDialog("dinSide.html",feltId.value,winPrefs);

-- og så hente den onload:

onload="feltId.value=dialogArguments;"

http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/methods/showmodaldialog.asp
Avatar billede angelenglen Nybegynder
25. juli 2005 - 16:30 #5
kan man sende mere end et argument?
-for lige nu bruger jeg:
var dlg = window.showModalDialog("dinSide.html",window,winPrefs);
-jeg skriver "window" for at kunne lukke vinduet igen - og så jeg kan bruge
dialogArguments.location.reload(); osv.

men hvis jeg kan sende flere argumenter med, ville det være ret fedt!
Avatar billede roenving Novice
25. juli 2005 - 16:35 #6
Ja, sagtens, da den kan være alle gyldige javascript-typer, så du kan f.eks.

var dlg = window.showModalDialog("dinSide.html",[window,feltId.value],winPrefs);

onload="feltId.value=dialogArguments[1];"
dialogArguments[0].location.reload();
Avatar billede angelenglen Nybegynder
25. juli 2005 - 18:24 #7
ooh nice, og så virker det endda ;-)

Smid et svar for points!
Avatar billede roenving Novice
25. juli 2005 - 18:25 #8
Velbekomme '-)
Avatar billede olebole Juniormester
26. juli 2005 - 02:32 #9
<ole>

Den nemmeste måde at komme udenom cache'en i en showModalDialog er nok at sætte en unik query på fil-request'en:

var dlg = showModalDialog("side.html?u="new Date().getTime(), ... osv, osv ...)

- så er det altid en 'frisk' side, der bliver vist i dialogen  ;o)

/mvh
</bole>
Avatar billede olebole Juniormester
26. juli 2005 - 02:32 #10
Oooops ...  :)

var dlg = showModalDialog("side.html?u="+new Date().getTime(), ... osv, osv ...)
Avatar billede angelenglen Nybegynder
26. juli 2005 - 08:03 #11
hmm ja, olebole's løsning er faktisk mere effektiv til at fjerne cache-problemet, men roenving's løsning er ret praktisk til andre ting også.

Hvis du smider et svar også olebole, så kan i dele points.
Avatar billede angelenglen Nybegynder
31. juli 2005 - 12:45 #12
ok lukker.
Avatar billede roenving Novice
31. juli 2005 - 13:39 #13
Tak for point ;~}
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