Avatar billede clone Nybegynder
17. juli 2001 - 13:23 Der er 11 kommentarer og
1 løsning

Tjekke om et vindue er åbent, hvordan?

Jeg åbner et nyt vindue med følgende funktionskald:

x = window.open(\'Page3.html\', \'vindue\', \'width=450, height=350\');

og det virker fint. Problemet er bare, at det kun skal muligt at åbne ét vindue. Dvs. næste gang brugeren trykker på \"åben-vindue\" knappen, så skal JavaScriptet først tjekke om der allerede er et vindue åbent - og kun i dette tilfælde skal vinduet åbnes.
Avatar billede uller Nybegynder
17. juli 2001 - 13:35 #1
lytter
Avatar billede kasseper Nybegynder
17. juli 2001 - 13:43 #2
Avatar billede jakoba Nybegynder
17. juli 2001 - 13:52 #3
i head;
<script language=\'javascript\'> <!--

var x;            // NB: x skal defineres udenfor funktionen.

function winOpen( url, bredde, hojde ) {
    if ( x && x.aabnet ) {
        x.location.href = url;
        x.resizeTo( bredde, hojde ); // eller er det ( hojde, bredde ) ?
        x.focus();
    } else {
        x = window.open(url, \'vindue\', \'width=\'+bredde+\', height=\'+hojde );
        x.aabnet = true;
        if (x.focus) x.focus();
    };
}; //end winOpen( string, int, int )

// --> </script>

der hvor du vil åbne et vindue kalder du så winOpen(...) istedet for window.open(...).
bemærk at nr 2 parameter (vinduets navn) er fjernet og ikke skal med.
fx:
<input type=\'button\' value=\'lav popop\'
    onclick=\"winOpen(\'en_side.html\',400, 260);\">

mvh JakobA


Avatar billede kasseper Nybegynder
17. juli 2001 - 14:05 #4
jakoba kigger du ikke lige ind : http://www.eksperten.dk/spm/88210
Avatar billede clone Nybegynder
17. juli 2001 - 14:13 #5
jakoba: Det ser meget fornuftigt ud, det du har skrevet, men jeg synes ikke det virker helt som det skal. Hvis man har åbnet et vindue, så åbner den ganske rigtigt ikke et nyt (perfekt), man hvis man lukker \"det nye\" vindue, og trykker på \"lav popup\" igen så kommer der en Runtime Error. hmmm...
Avatar billede kasseper Nybegynder
17. juli 2001 - 14:16 #6
Hvorfor bruger du ikke den kode fra den artikel som jeg postede, den viser præcis hvordan du skal gøre...?
Avatar billede jakoba Nybegynder
17. juli 2001 - 14:36 #7
ja.

var x = null;

if ( (x != null) && (!x.closed) ) {

er nok bedre.

hvis ikke så fortæl mere om den fejl der kommer. (det ku jo bære jeg har lavet en banal fejl et andet sted:)
Avatar billede olebole Juniormester
17. juli 2001 - 14:46 #8
<ole>
Når et vindue åbnes med JavaScript, får det faktisk automatisk tildelt en property, der hedder \'closed\'. Det er en boolean, der er false til vinduet lukkes, men er true, når det er lukket. Til gengæld eksisterer denne property jo ikke, før objektet er blevet deklareret, så derfor:

win = new Object();
win.closed = true;
function winOpen( url, bredde, hojde ) {
  if (!win.closed) {
    win.location.href = url;
    win.resizeTo(bredde,hojde);
    win.focus();
  }
  else {
    win = window.open(url, \'vindue\', \'width=\'+bredde+\', height=\'+hojde );
    win.focus();
  }
}

/mvh
</bole>
Avatar billede olebole Juniormester
17. juli 2001 - 14:49 #9
...og skriv iøvrigt hellere:
    win = window.open(url, \'win\', \'width=\'+bredde+\',height=\'+hojde );
jakoba >> Husk: Ingen mellemrum mellem de sidste parametre (højde, bredde, location, toolbar...osv) i en window.open()  :)
/mvh
Avatar billede jakoba Nybegynder
17. juli 2001 - 15:00 #10
Ups. Den var jeg ikke klar over. tak.
Avatar billede olebole Juniormester
17. juli 2001 - 15:21 #11
...anytime  ;o)
Avatar billede clone Nybegynder
17. juli 2001 - 16:02 #12
Tak for hjælpen. Nu fik jeg det til at virke... jeg har dog stadig et lille tæt relateret spørgsmål, som jeg skrivet om i et nyt indlæg.
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