Avatar billede Slettet bruger
26. maj 2010 - 09:05 Der er 12 kommentarer og
2 løsninger

Unik "browser session" ?

Jeg er rendt ind i et sjovt problem:
På mit site bruger jeg en cookie til at gemme nogle "status oplysniger".
- Handler om en "toolbox" - positionen og størrelsen af denne, aktivt faneblad og dettes scroll-top.
Sådan at, når brugeren skifter side, bliver toolboxen hvor den er: Dejligt.

MEN

Hvis brugeren arbejder med sitet, i to browservinduer, skrives disse data jo i den samme cookie, med det resultat at toolboxen hopper rundt.

Ja, det er ikke verdens største problem, men en interessant problemstilling, som jeg ikke liige kan finde en løsning på:

Hvordan kan man navngive en cookie unikt for den aktuelle "browser-session".
- findes der en "intern værdi" i DOM f.eks. som er unik for browservinduet, på tværs af dokumenter men ikke på tværs af vinduer ?
Avatar billede showsource Seniormester
26. maj 2010 - 10:58 #1
En cookie gemmes "til browseren" og ikke til eksisterende vindue af browser.
Så nej.

Og hvorfor ta' højde for at brugeren flytter rundt på div. ting i forskellige vinduer ?
Avatar billede Slettet bruger
26. maj 2010 - 11:57 #2
Fordi det er en temmelig "omfangsrig" toolbox, og det er irriterende at man skal åbne og flytte den samme sted hen, igen og igen hver gang man skifter "hovedside".

Jeg HAR som sagt lavet det, og det funker perfekt - bortset fra dén situation hvor brugeren tilgår sitet med flere vinduer samtidig (hvilket dog er ret usandsynligt - og ikke resulterer i deciderede fejl)

Så det ER mest det principielle i situationen:
- At begrænse cookie'ns "virkefelt" til det aktuelle browservindue...
Avatar billede showsource Seniormester
26. maj 2010 - 12:13 #3
Ehh, du mener, hvis brugeren åbner et nyt vindue/faneblad, vises de gamle indstillinger ?
Altså cookie fra første vindue virker ikke i det nye ?
Avatar billede Slettet bruger
26. maj 2010 - 12:50 #4
Jo, de virker også i det nye vindue - det er netop dét de IKKE skal.
- hvert af vinduerne skal kunne arbejde med sin egen toolbox-cookie.

Ved, havde jeg tænkt, at cookien navngives med en værdi som er unik for vinduet...

Den bedste idé jeg er kommet på (som dog er usandsynlig bøvlet) er at lægge navnet i et hidden <input> felt, som sættes (hvis det mangler), og overføres fra side til side af PHP.
- men dén har jeg opgivet på forhånd, dels pga. bøvlet, men mest fordi det, med stor sandsynlighed, vil kikse og/eller kaste prompter i hovedet på brugeren hvis hun bakker : (
(Der ER ingen "superForm" på siderne i forvejen)
Avatar billede showsource Seniormester
26. maj 2010 - 12:57 #5
Ja, jeg vil mene du ikke rigtig kan gøre noget.
Også at du ikke skal ta' dig af det :O)

Man kunne måske noget med at sætte et unikt navn, f.eks. med sessions, men vil mene du blot spilder din tid.

Så hellere udvikle en browser som kan det du efterspørger :O)
Avatar billede olebole Juniormester
26. maj 2010 - 13:04 #6
<ole>

I 'gamle dage' brugte man frames til at gemme data på tværs af vekslende dokumenter i samme browservindue. Data blev gemt i det yderste frameset dokument - og siderne blev så skiftet indenfor dette frameset. JavaScript kunne så fra et dokument inde i framesettet skrive op til - og læse fra - det yderste frameset

Det samme kan du ikke gøre med cookies, da du ikke umiddelbart kan skelne vinduer fra hinanden ... de har ikke en tilgængelig identifier. Naturligvis har de hver en identifier, men du skal f.eks. ud og have fat i noget Shell-scripting, for at få fat i den. Indenfor webkode har du dog ikke mulighed for at tilgå den slags.

/mvh
</bole>
Avatar billede Slettet bruger
26. maj 2010 - 13:35 #7
Jaaa, jeg kunne jo, istedet for cookie'en, lægge værdierne op i en superFrame
- som jeg i forvejen pønser lidt på - bare for at skjule de "grimme URLer"

Men jeg har, hidtil, slået det hen, fordi jeg bruger "top" til at flintre rundt imellem dokumentet og diverse IFRAMES (men skal bare rette alle "top." til "window.parent.")
- så, faktisk mest fordi JEG godt kan li' de "grimme URL'er" (til debugging..)

Ja, points til dig Ole - men ikke endnu!
- jeg vil stadig gerne se en løsning på "det principielle problem" : )
Avatar billede olebole Juniormester
26. maj 2010 - 14:22 #8
'Det principielle problem' er jeg meget sikker på, du ikke får en løsning på - og (i)frames kan jeg ligesom telegrafnøgler og dampdrevne symaskiner ikke anbefale til ret meget.

Dog kan de stadig bruges på museer, udstillinger og i dokumentarfilm, så vore børn og børnebørn kan få en fornemmelse af, hvordan deres sære fortid så ud  ;o)
Avatar billede Slettet bruger
26. maj 2010 - 15:07 #9
LOL

Nu BRUGER man faktisk stadig dampmaskiner - når det virkelig skal virke!
- i atomkraftværker.

Jeg bruger dem (IFRAMES!) i mit eget hjemmestrikkede AJAX-system.

Jeg har en IFRAME (i en div ude af syne), som jeg skriver til vha. innerHTML
- det jeg skriver er en <form> med action, felter, values og hele svineriet, som jeg derefter sumbitter - serveren svarer med en klump javascript, som kører umiddelbart.

Så dét var endnu et par røde klude : )
- Jeg kan levende forestille mig din reaktion, men som sædvanlig:
Det er let at forstå, debugge, tilrette/udvidde og super-fleksibelt.
Avatar billede olebole Juniormester
26. maj 2010 - 15:34 #10
Nejnej, det skam ikke røde klude. Den teknik arbejdede jeg enormt meget med for en halv snes år siden. Det var vi rigtig mange, der gjorde - men vi gjorde det, fordi det var den eneste løsning, der på det tidspunkt var tilgængelig.

I dag er der heldigvis kommet langt bedre metoder til - men det står da alle helt frit, om de stadig vil ligge og kæmpe med gammelt skidt. Mit liv er dog al for kort til den slags  =)
Avatar billede Slettet bruger
26. maj 2010 - 16:38 #11
Hmm... "gammelt skidt"
- Og jeg som gik og troede jeg havde opfundet en genial AJAX-erstatning : )
Avatar billede j4k0b Nybegynder
28. maj 2010 - 13:55 #12
- Og jeg som gik og troede jeg havde opfundet en genial AJAX-erstatning : )

Din metode var meget udbredt for 5-10 år siden. XMLHttpRequest er faktisk en erstatning for den metode du bruger. Jeg troede faktisk at din metode med at bygge formularer op i iframes (eller submitte formularer til usynlige frames) - og så lade serveren returnere JavaScript til browseren - kun blev brugt til cross-domain AJAX i dag.
Avatar billede Slettet bruger
28. maj 2010 - 14:59 #13
Det virker nu (stadig) upåklageligt - og er let at debugge, hvis ikke...
- og så slipper jeg for (ActiveX) "black box" kode ala:
if (xmlHttp.readyState==4) <= føj

Der er dog én hage ved metoden, har jeg lige opdaget - back-knappen..
Ikke at der (tilsyneladende) går noget galt, bare "mystisk" for brugeren.
"- hvorfor skal man klikke 18 gange på back, før den gør det ?"

Jeg overvejer at "kurrere" det, ved helt at droppe min <form> og bruge location.replace("BJAX.php?"+parms) og $_GET i PHP-enden.
- men så ryger det meste af debug-venligheden :(

SÅ, det ender nok med at jeg må bøje nakken, og falde ind i geleddet...
Avatar billede Slettet bruger
21. juni 2010 - 22:37 #14
Ja, det bliver sgu for meget ståhej for den småting
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