22. august 2002 - 13:35Der er
11 kommentarer og 1 løsning
tjekke om vindue er åbent
Jeg har problemer med at tjekke om et vindue er åbent. Vinduet åbnes med window.open() fra en række links, men kun hvis det ikke allerede er åbnet skal window.open() aktiveres, ellers skal vinduet bare opdateres. Min script ser sådan ud:
<script type="text/javascript"> <!--
leftPosition=0; if (screen) { leftPosition = screen.width -535 }
function myOpen(name) { name="specialistliste.html#"+name; if (self.win) { win.focus(); win.location=name; } else { win = window.open(name, "win", "width=510,height=333,top=0,left="+leftPosition+",scrollbars=no,resizable=no,dependent=yes"); win.focus(); } }
-- Men som det står nu tjekkes der jo egentlig ikke på om vindet er åbnet, men bare om vinduet findes (og det gør det også hvis det har været åbnet og lukket igen, så derfor kan det derefter ikke åbnes igen). Men hvis jeg i den første del af funktionen forsøger med: if (self.win.!closed) får jeg fejl ("der mangler en Id") fordi scriptet af gode grunde ikke kan finde win før det har været åbnet. A'ka'ik'rigti fin'uaed...
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
det er sådan lidt 'skummel' kode vi prøver at give win fokus. hvis vi ikke kan det 'kaster' browseren en udtagelse (exception) der indeholder fejlen. den undtagelse griber vi så (catch) og behandler.
jamen det her må kunne lade sig gøre helt uden noget skummelt - det er bare mig der ikke er dygtig nok til js til at jeg lige kan se hvordan. det drejer sig vel om at bruge window.closed egenskaben på den rigtige måde i dette tilfælde.
OK - det var vist en syntaksfejl. Nu ser funktionen sådan ud i stedet:
function myOpen(name) { name="specialistliste.html#"+name; if (self.win&&!win.closed) { // det er denne linje der er ændret win.focus(); win.location=name; } else { win = window.open(name, "win", "width=510,height=333,top=0,left="+leftPosition+",scrollbars=no,resizable=no,dependent=yes"); win.focus(); } }
-- dvs. !win.closed i stedet for som jeg prøvede før: win.!closed - og nu fungerer det efter hensigten. Bort set fra at jeg også godt ville have vinduet til automatisk at lukke hvis man forlader opener siden. Jeg har forsøgt med flg. i den fil, som window.open() åbner:
if (opener.closed) self.close();
- men det virker ikke efter hensigten. Nogle bud på det?
Synes godt om
Slettet bruger
22. august 2002 - 16:33#8
For det første ville det betyde, at du køre et timeout, der tjekkede, om opener var lukket, fx hvert sekund og for det andet virker closed attributten vist ikke for et vindue, som du ikke selv har åbnet med JavaScript. Du kan evt. bruge onUnload i opener:
phoenixv> tak for tippet. det fungerer faktisk fint. det nye vindu SKAL nemlig lukkes hvis man surfer væk fra opener siden. Og det lukker ikke ved klik på de links der åbner det (som du vist mener det burde gøre). Vel fordi alle linkene jo indeholder en void(0) operator - mon ikke?
jeg er så spændt på hvordan det fungerer i IE 5.0/4.0. For i 5.5+ behøver man slet ikke den oprindelige øvelse med at tjekke om vinduet er åbent for kun at opdatere det (og ikke åbne endu et vindue engang hver gang der klikkes på et nyt link - det var det der var problemet)
Synes godt om
Slettet bruger
23. august 2002 - 14:41#12
Det jeg mente var, at vinduet lukker, når man klikker på et link, der fører væk fra siden.
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.