En JS-popup har en boolsk property, der hedder 'closed'. Problemet med den er, at den selvfølgelig først eksisterer, når vinduet har være åbnet. Et lille 'hack' er dog at oprette et globalt objekt og sætte en property på det. Senere udskifter vi så objektet med popup'en:
<script type="text/JavaScript"> var win = new Object(); win.closed = true; function myOpen() { win = window.open("side.html","navn"); } </script>
Men siden må ikke loades ind igen, fordi så mister brugeren alt den information, som findes der.... det er et chat-vindue, som brugeren har minimeret, og hvis brugeren skulle være så klumbet at klikke på "chat-linket" igen, skal der ikke åbnes et nyt vindue, idet chat-vinduet allerede er åbent... der skal blot skiftes fokus til det.
Så hvilken af jeres kode-eksempler skal jeg anvende?
Synes godt om
Slettet bruger
21. juni 2003 - 10:41#6
Du skal anvende oleboles her: 21/06-2003 02:36:05
Jeg vil dog lige give min version med:
<script type="text/javascript"> vin = null;
function abnVindue() { if (vin != null && !vin.closed) vin.focus(); else vin = window.open("din_side.html", "nytVindue", "width=300,height=300"); } </script>
function openChat() { if (popupWin != null && !popupWin.closed) { alert("vinduet er allerede åbent - giver det fokus"); popupWin.focus(); } else { alert("åbner et nyt vindue."); PopWin('/chat/ramme.asp?chatMode=active','chat','no','no','no','no','no','yes','600','800'); } } </script>
Scriptet gør det modsatte af, hvad det burde gøre. Når vinduet er åbent, så forsøger scriptet at åbne et nyt vindue, og når vinduet er lukket, så forsøger scriptet at give det fokus:
Jeg har fundet en mangel :-) og det er, hvis jeg går videre til en anden side, hvor jeg klikker igen på det samme link (linket ligger i en border, som vises på alle sider) så vil scriptet åbne et nyt vindue. Det er ikke så smart, når nu vinduet allerede er åbnet (det er bare blevet åbne fra en anden side).
popupWin = null; member = '<%=Request.Cookies("Snitz00User")("Name")%>'
function openChat(chatMode) {
if (member !="") { if (popupWin != null && !popupWin.closed) { popupWin.focus(); } else { PopWin('/chat/ramme.asp?chatMode='+chatMode,'chat','no','no','no','no','no','yes','600','800'); } } else { alert('Du er enten ikke logget ind, eller så har du ikke oprettet dig som medlem endnu (gratis).'); location.href='xxxxxxxxxxxxxxxxxx'; } } </script>
Hvis du i hovedvinduet navigerer til en anden side, end den, der har åbnet vinduet, taber du (browseren) naturligvis al viden om popup'ens eksistens. Det kan kun omgåes ved at bruge frames ... eller at lægge info om popup'en i en cookie (evt. en session) - men det bliver let noget rod. /mvh
... anytime :) I øvrigt er frames-løsningen den klart letteste. Cookie/session bliver _meget_ let noget bøvl, du ville ønske, du ikke havde kastet dig ud i ;o) /mvh
Synes godt om
Ny brugerNybegynder
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.