Avatar billede rennebo Nybegynder
01. december 2000 - 16:55 Der er 4 kommentarer og
2 løsninger

Er opener stadig åben?

Jeg har et et site hvor jeg åbner et ny vindue i javascript. Når det nyåbnede vindue lukkes, skal opener ha\' en ny url. Den del går skam også helt fint, men hvad nu hvis brugeren har lukket opener i mellemtiden?
Jeg har lavet en lille funktion jeg ikke fatter hvorfor ikke virker....
function xit()
{
    if (window.top.opener.location.href)
    {
        alert(\"Vinduet er åbent\")
        window.top.opener.location.href = \"end.asp\";
    }
    else
    {
        alert(\"Vinduet er lukket\")
        open(\"end.asp\",\"_blank\",\"scrollbars=1,status=1,menubar=1,resizable=1,location=1,toolbar=1\");
    }
}

Problemet er at jeg aldrig kommer ind i min else.... Enten er vinduet åbent (og så virker det) eller også sker der intet.

Hvad gør jeg galt??
Avatar billede jakoba Nybegynder
01. december 2000 - 23:55 #1
Hvis han har lukket opener vinduet burde din if betingelse give en fejl
    \"no such object    (as \"window.top.opener.location\")

test istedet på:

  if (    (window.top.opener)
      &&  (window.top,opener.location) )

så skulle den returnere false hvis opener er lukket.

PS: det er vist kun en af betingelserne der er nødvendig, men jeg kan ikke huske hvilken :)

mvh JakobA
Avatar billede jumper Nybegynder
02. december 2000 - 13:26 #2
if (top.opener && !top.opener.closed){
  // opener er stadig åben
} else {
  // opener er lukket
}

/Thor
Avatar billede rennebo Nybegynder
02. december 2000 - 22:51 #3
Det er alt sammen meget godt, men det virker bare ikke.....

jumper..... Din version søger også rigtigt, men kommer aldrig ned i \"else\" delen. Enten er opener åben, eller også \"dør\" scriptet *SUK*

Kan det virkelig passe at man ikke kan teste om opener stadig er åben?? Det kan jeg da bare ikke acceptere *GGGGRRRRRRRR*
Avatar billede jakoba Nybegynder
04. december 2000 - 22:55 #4
Ok et forsøg mere:

I det vindue der måske vil blive lukket sørger du for at få en handle når du åbner det andet

windowHandle = windov.open(\"dit_andet_vindue.html, ... );

og i <BODY lægger du en onUnload såsom:

<BODY ...  onUnload=\'windowHandle.opener=null\'>

i det åbnede vindue kan du så teste på:

if ( window.opener ) {
  alert (\"opener is still open\")
} else {
  alert (\"opener has been closed\")
};

mvh JakobA
Avatar billede jakoba Nybegynder
04. december 2000 - 23:00 #5
Så lige at i første forsøg gav jeg
      (window.top,opener.location)
som anden testbetingelse (bemærk komma mellem top og opener)
det skulle naturligvis have været et punktum.
      (window.top.opener.location)
Avatar billede rennebo Nybegynder
05. december 2000 - 10:33 #6
Jakoba....

Der er lige et lille problem. Jeg vil da få den samme fejl, som ved de forrige løsninger.

Meeeen..... Du er ikke helt ved siden af. Jeg har fået et par gode ideer til hvordan problemet skal løses.

Man sætter en variabel i det nye vindue fra opener, og opdaterer så den variabel på onUnload i opener...

Lyder det forvirrende??? *GG*
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