Avatar billede petercardel Nybegynder
26. januar 2001 - 13:54 Der er 6 kommentarer og
1 løsning

Hjælp mig!!

Hej alle, håber der er nogen, der kan løse mit problem.

Jeg har en side der bliver åbnet med et javascript-link...og det går også fint nok. Mit problem er at jeg også gerne vil have, at man kan lukke det igen med et javascript-link. Siden der skal åbnes (default.htm)består at 3 frames: top, main og bund. Top og bund er sider der ligger på min egen server, mens main-siden er en remote-file. Koden jeg bruger til at definere åbning og lukning af siden er følgende:
------------------
<script language=\"javascript\">
<!--
function openWindow(){
lawWindow = window.open(\'/lov/default.htm\',\'lawWin\',\'scrollbars=yes,location=no,toolbar=no,width=500,height=400\')
}
function closeWindow(){
lawWindow.close()
}
//-->
</script>
----------------
og de to links hedder:
----------------
<a href=\"java script:openWindow()\">Open vindue</a>
<a href=\"java script:closeWindow()\">Luk vindue</a>
----------------
Hvad pokker gør jeg forkert??

Hvis der skal nærmere forklaring til vil jeg gerne kontaktes på email: pcardel@odense.kollegienet.dk

På forhånd tak :o)
Avatar billede doeleman Nybegynder
26. januar 2001 - 13:58 #1
Du har ikke angivet det korrekte navn på vinduet.

function closeWindow(){
lawWindow.close()
}

skal være
function closeWindow(){
lawWin.close()
}

Brug evt.
self.close();
Avatar billede jakoba Nybegynder
26. januar 2001 - 14:05 #2
skriv

var lawWindow = \"\";

foran din første funktion. Ellers er der en lokal variabel der forsvinder når openWindow er udført.

funktionen closeWindow bør evt udvides med:

      if ( lawWindow )

så der ikke kommer javaskript fejl på lik mens intet er åbent.

mvh JakobA
Avatar billede petercardel Nybegynder
26. januar 2001 - 14:07 #3
Har prøvet at rette det du skrev, men så kommer fejlbeskeden: \'lawWin\' er ikke defineret...hvad gør jeg forkert?
Avatar billede jakoba Nybegynder
26. januar 2001 - 17:51 #4
lawWin er det navn ser oprettes en ramme med i frames arrayet. Den er ofte direkte tilgængelig, men refereres sikrest med:

self.frames.lawWin.close();
Avatar billede r_brejnholt Nybegynder
28. januar 2001 - 20:36 #5
- ellers kan man vel bare lave:
<a href=\"closer.htm\" target=\"lawWin\">LUK</a>
hvor closer.htm filen består af teksten:
<html><body onload=\"window.close()\">
</body></html>
Avatar billede jakoba Nybegynder
28. januar 2001 - 20:52 #6
Prøver igen. Det virker for mig

-----------------
<script language=\"javascript\"> <!--

var lawWindow = \"\";
function openWindow(){
  lawWindow = window.open(\'/lov/default.htm\',  \'lawWin\',
                  \'scrollbars=yes,location=no,toolbar=no,width=500,height=400\');
};
function closeWindow(){
    lawWindow.close()
};

//-->  </script>

    ----------------
    og de to links hedder:
    ----------------

<a href=\"java script:openWindow()\">Open vindue</a>
<a href=\"java script:closeWindow()\">Luk vindue</a>

    --------------

mvh JakobA
Avatar billede jakoba Nybegynder
30. januar 2001 - 21:00 #7
Jeg har fået din mail, og da svar helst skal gå igennem eksperten (så andre kan have nytte af dem) svarer jeg her.

Der er ialt 5 htmlfiler

lov.htm                      Åbner en frameset fil i nyt vindue.
  default.htm              Framesetfilelen der igen har 3 rammer med filerne
    top.htm                  standard top på din side
    xxxxx.htm              side fra en \"fremmed server\"
    bund.htm              den bundramme hvorfra du ønsker at lukke popupen.

Siden du ikke specielt sagde noget og dit eksempel definere både windowOpen og windowClose i samme side har doleman og jeg indtil nu troet at du ønskede at lukke vinduet fra det vindue der åbnede det.
I din bund.htm fil ser det ud til at det er der du ønsker et \"Luk Popoppen\" link.

Det gør en gevaldig forskel hvilken side linket skal være på.

det \"vindue\" vi skal have lukket er det der indeholder filen default.htm

fra lov.htm adresseres det som angivet i tidlige svar:
    lawWindow.close()
eller
    self.frames.lawWin.close()

fra de 3 rammer adresseres det som
  parent.close()
eller
  top.close()
(de 3 rammer blev skabt af default.htm så den er deres forælder)

for at lukke vinduet fra et link i bund skriver du altså et link som fx:

<a href=\"java script:parent.close();\">luk dette vindue</a>

du kan også være fancy og tage hele turen op igennem sidetræet:

<a href=\"java script:parent.opener.lawWindow.close();\">luk dette vindue</a>

men det vil jeg ikke anbefale.

parent                        op til frameset i default.htm i popup vinduet
          .opener                          fra frameset op til lov.htm vinduet
                    .lawWindow                  fra lov.htm vinduet tilbage i popup vinduet
                                      .close()                  som skal lukkes.

på den måde kan man adressere frem og tilbage mellem vinduer der har åbnet hinanden.

mvh JakobA
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