Avatar billede pstric Nybegynder
05. maj 2003 - 13:04 Der er 23 kommentarer og
1 løsning

Ændre session i window.open()

<html>
<body>
<button type="submit" onclick="btn1Click();">Vis1</button>
<button type="submit" onclick="btn2Click();">Vis2</button>
</body>
<script language="javascript">
function btn1Click() {
window.open('pdf1.pdf', '', 'resizable, scrollbars');
}
function btn2Click() {
window.open('pdf2.pdf', '', 'resizable, scrollbars');
}
</script>
</html>
Åbn ovenstående kode i en browser,
Klik på Vis,
Luk browservinduet med pdf2.pdf,
Klik i pdf1.pdf,
Luk browservinduet med pdf1.pdf,

nu går browseren med ovenstående kode ned.

Hvis window.open kaldes fra to browsere med forskellig session, går det godt.

Så mit spørgsmål er, hvordan jeg tvinger window.open til at bruge en ny session.
Avatar billede roenving Novice
05. maj 2003 - 13:18 #1
Giver dit window et navn:

function btn1Click() {
window.open('pdf1.pdf', 'pdf1', 'resizable, scrollbars');
}
function btn2Click() {
window.open('pdf2.pdf', 'pdf2', 'resizable, scrollbars');
}
Avatar billede pstric Nybegynder
05. maj 2003 - 13:31 #2
Jeg skal ikke lige kunne sige om det giver dem hver deres session, men det løser i hvert fald ikke problemet med at browseren crasher.

Hvis jeg klikker på Vis1 og Vis2 i to browsere, der har hver sin session, crasher IE ikke.

Det går kun galt, hvis det er pdf filer der åbnes, og kun hvis man klikker i pdf1.pdf inden man lukker den.
Avatar billede roenving Novice
05. maj 2003 - 13:42 #3
Så er det jo Acrobat Reader, som går/trækker ned ...
Avatar billede pstric Nybegynder
05. maj 2003 - 13:51 #4
Ja, det lader til at være tilfældet.

Jeg har oprettet spørgsmålet i denne kategori fordi det kun giver problemer hvis vinduerne deler session. Derfor skal det løses med (D)HTML. Jeg kan ikke gøre noget ved fejl i Acrobat Reader, og jeg kan - desværre - heller ikke bede alle brugerne om at opdatere til en version der virker.
Avatar billede roenving Novice
05. maj 2003 - 14:11 #5
Så begynder det at være svært,

-- jeg kunne forestille mig, at Acrobat knytter sig til IE generelt og ikke en bestemt instans, måske kunne det hjælpe, hvis du reloadede moder-siden, når du lukkede pop-up'en ?-)
Avatar billede pstric Nybegynder
05. maj 2003 - 14:40 #6
Nej, det vil desværre ikke løse problemet. Brugerne må gerne have to rapporter åbne på samme tid, så det skal være når window.open() kaldes, at der skal laves en ny session.

Jeg har åbnet to ens rapporter fra to browsere med forskellig session, og da gik det godt, så jeg er ret sikker på at det vil kunne løse mit problem.

Det vil ikke være nok at URL'en er en JSP side, hvor jeg invalidater session, for så vil session også blive invalidated i parent browseren. Det skal KUN være popup vinduet, der får en ny session.
Avatar billede olebole Juniormester
05. maj 2003 - 19:26 #7
<ole>

Det er ikke et HTML-spm ... du har ingen kontrol over sessions i HTML/JavaScript.

Det ligner en serverside-fejl, du laver. Jeg kan i det mindste ikke ganskabe den i PHP eller ASP/JScript.

/mvh
</bole>
Avatar billede pstric Nybegynder
06. maj 2003 - 11:43 #8
olebole>> kan du genskabe fejlen i ren html - som i det eksempel jeg har givet?
Avatar billede olebole Juniormester
06. maj 2003 - 14:35 #9
Jeg kan ikke oprette en session i HTML - så nej, det kan jeg ikke. Og uden sessions er der ingen problemer  :)
/mvh
Avatar billede pstric Nybegynder
06. maj 2003 - 15:26 #10
olebole>> Jamen, jeg opretter da heller ikke nogen session i den kodestump der står i spørgsmålet - og det er præcis den kode jeg lægger i en html fil.

Jeg har måske ikke nogen eksplicit kontrol over sessions i HTML/JavaScript, men kan man ikke forestille sig, at Acrobat Readeren (jeg går ud fra at det må være en ActiveX Control) bruger en session, der bliver oprettet implicit.
Avatar billede olebole Juniormester
06. maj 2003 - 16:02 #11
Det er mig komplet umuligt at genskabe fejlen med en copy/pasted kode ... bortset fra mine filer hedder 'test.pdf' og 'test2.pdf'.

Giver jeg de to vinduer navnene 'a' henholdsvis 'b' kan jeg endda have dem åbne samtidigt. Så deeeeeeeeeeet .........  :)
/mvh
Avatar billede olebole Juniormester
06. maj 2003 - 16:03 #12
Desuden tror jeg din idé om, at der bliver sat en session på klienten for tvivlsom  :)
Avatar billede olebole Juniormester
06. maj 2003 - 16:10 #13
Ehhhh .... det blev vist en kommentar på 'serbo-kaotisk'  :D

"Desuden anser jeg din idé om, at der bliver sat en session på klienten for tvivlsom". Er nok lidt bedre  ;o)
Avatar billede pstric Nybegynder
06. maj 2003 - 16:42 #14
"Giver jeg de to vinduer navnene 'a' henholdsvis 'b' kan jeg endda have dem åbne samtidigt."
Kan du ikke det, hvis du ikke navngiver dem??? Jeg kan altid få lov til at have begge pdf filerne åbne samtidigt og de bliver altid åbnet i hvert deres browser vindue.

Grunden til at jeg troede (tror) at det kan have noget med session variabler at gøre er, at jeg opdagede problemet da jeg åbnede to dynamisk genererede pdf filer ved at brugeren klikker på en knap. Efter at jeg havde brugt lang tid på at lede efter fejlen i den kode der genererer pdf'erne, fandt jeg ud af at jeg kunne genskabe fejlen fra andre steder i programmet, hvor brugeren kan vælge mellem en lang række rapporter. Hvis man åbner mere end en rapport og lukker dem i omvendt rækkefølge og klikker i den først åbnede inden man lukker den, så crasher IE. Hvis man derimod åbner en rapport i to browser winduer, som har forskellig session id, sker der ikke noget når man lukker dem. Der sker heller ikke noget hvis man lukker den først åbnede uden at have klikket i den.

Jeg har prøvet fra IE'er på adskillige computere - altid med samme resultat :-(
Avatar billede olebole Juniormester
06. maj 2003 - 17:08 #15
Så lykkedes det endelig ...! Hvis jeg klikker fire-fem gange frem og tilbage, sker det  :)

roenving gav dig dog svaret allerede i sin kommentar (05/05-2003 13:18:56). Det fjerner problemet.

I øvrigt har din kode fejl. Der må _aldrig_ være mellemrum mellem tredie arguments elementer i en window.open() - og der er desuden tale om boolske argumenter.
Altså det her: 'resizable, scrollbars' - skal være: 'resizable=yes,scrollbars=yes'.

Sådan skal din kode med andre ord se ud - så har du ikke længere problemer:

function btn1Click() {
  window.open('pdf1.pdf', 'pdf1', 'resizable=yes,scrollbars=yes');
}
function btn2Click() {
  window.open('pdf2.pdf', 'pdf2', 'resizable=yes,scrollbars=yes');
}

/mvh
Avatar billede roenving Novice
06. maj 2003 - 17:14 #16
>>ole

jeg kan huske den var oppe at vende for et par år siden, hvor det endte med en rimelig konsensus om (såvidt jeg husker)

normale booleanske værdier i .open-parametre default var true/yes/1 medmindre een af dem var angivet, så var de false/no/0

HVilket vil sige

'resizable,scrollbars'

betyder
'resizable=yes,scrollbars=yes,menubar=no,toolbar=no,statusbar=no ...'
Avatar billede olebole Juniormester
06. maj 2003 - 17:21 #17
Det er ikke helt entydigt. Der er visse browserafhængigheder. Jeg kan huske, vi bl.a. testede det på Framfab og fandt ud af, det sikreste var at sætte værdien  :)
/mvh
Avatar billede pstric Nybegynder
06. maj 2003 - 19:33 #18
Jeg har kigget på MSDN's dokumentation for open(), og det ser rigtignok ud til at værdien af parameteren skal angives. Desværre fjerner det ikke problemet, og det hjælper tilsyneladende heller ikke at navngive vinduerne.
Avatar billede olebole Juniormester
06. maj 2003 - 21:54 #19
Taahhh .... med navngivne vinduer kan jeg flippe frem og tilbage mellem vinduerne 20 gange, uden den går ned. Mere har jeg ikke fundet det værd at teste  :)
Avatar billede pstric Nybegynder
07. maj 2003 - 08:25 #20
Ja, det kan jeg jo også med unavngivne vinduer. Fejlen opstår KUN hvis man KLIKKER i den først åbnede pdf fil - ikke på vinduets titelbar, menuen eller andet, men inde i pdf filen - inden man lukker den som den sidste.
Avatar billede olebole Juniormester
07. maj 2003 - 13:15 #21
Nej .... den opstår ikke hos mig med navngivne vinduer - uanset, hvor meget jeg klikker i dem  :)
Avatar billede pstric Nybegynder
07. maj 2003 - 15:36 #22
Æv, hvor jeg hader fejl, der ikke er reproducerbare :-(

Og jeg hader, at jeg kan få fejlen på alle de computere jeg har prøvet på, både W2K og XP. Øv, øv, øv
Avatar billede pstric Nybegynder
04. december 2006 - 13:07 #23
lukker spørgsmålet
Avatar billede roenving Novice
04. december 2006 - 18:19 #24
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

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