Avatar billede Slettet bruger
08. maj 2003 - 23:30 Der er 12 kommentarer og
1 løsning

tjekke om popup er åben, og hvis den er så luk den

Hej!

Jeg vil gerne tjekke med onload om mit popupvindue er åbnet og hvis det er skal det lukkes.

Jeg åbner vinduet sådan her:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
    <title>Untitled</title>
   
<script type="text/javascript">
function popup(url,name) {
window.open(url,name,"width=50,height=50,top=2000,left=2000,scrollbars=yes");
}
</script>
   
</head>

<body>

<a href="java script:popup('loading.html','loadingvindue')">Test</a>

</body>
</html>
Avatar billede olebole Juniormester
08. maj 2003 - 23:44 #1
<ole>

<script type="text/javascript">
var myWin = {"closed":false};
function popup(url,name) {
myWin = window.open(url,name,"width=50,height=50,top=2000,left=2000,scrollbars=yes");
}
</script>

Så kan du altid spørge:

if (myWin.closed) {
  alert("Vinduet er ikke åbent")
}
/mvh
</bole>
Avatar billede olebole Juniormester
08. maj 2003 - 23:45 #2
SNOT ...! Sådan:

<script type="text/javascript">
var myWin = {"closed":true};
function popup(url,name) {
myWin = window.open(url,name,"width=50,height=50,top=2000,left=2000,scrollbars=yes");
}
</script>

...sorry  ;oD
Avatar billede olebole Juniormester
08. maj 2003 - 23:49 #3
var myWin = {"closed":true};

Er en short-hand for:

var myWin = bew Object();
myWin.closed = true;

Et popUp-vindue har - når det har været åbnet - en property, der hedder 'closed'. Den kan være true eller false - alt efter om vinduet er blevet lukket.

Ved først at oprette et object med samme property - og senere erstatte dette object med selve vinduet, kan du også spørge til denne property, _før_ vinduet åbnes  ;o)
/mvh
Avatar billede Slettet bruger
09. maj 2003 - 13:05 #4
Jeg har nu testet lidt, og kan ikke få det til at spille.

Selvom popup vinduet er åbent, siger den når jeg reloader siden "Vinduet er ikke åbent"

Jeg skal altså have siden til at tjekke om det er åbent, og ikke bare om det rent faktisk er blevet åbnet og måske lukket igen...

Her er hvad jeg havde forestillet mig:

upload.html:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
    <title>Untitled</title>
   
<script type="text/javascript">
function popup(url,name) {
window.open(url,name,"width=50,height=50,top=2000,left=2000,scrollbars=yes");
}

function tjek () {
///hvis der findes et vindue der har navnet loadingvindue (qua nedenstående popupkode) skal det lukkes igen.
}

</script>
   
</head>

<body onload="tjek()">

<a href="java script:popup('loading.html','loadingvindue')">Test</a>

</body>
</html>

loading.html:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
    <title>Uploader</title>
   
<script>

var myWin = {"closed":false};

function doIt()
{
    if (self.innerWidth)
    {
        frameWidth = self.innerWidth;
        frameHeight = self.innerHeight;
    }
    else if (document.documentElement && document.documentElement.clientWidth)
    {
        frameWidth = document.documentElement.clientWidth;
        frameHeight = document.documentElement.clientHeight;
    }
    else if (document.body)
    {
        frameWidth = document.body.clientWidth;
        frameHeight = document.body.clientHeight;
    }
    else return;


        newWidth = document.ProductPic.width;
        newHeight = document.ProductPic.height;
        if (document.layers)
        {
            tmp1 = parent.outerWidth - parent.innerWidth;
            tmp2 = parent.outerHeight - parent.innerHeight;
            newWidth -= tmp1;
            newHeight -= tmp2;
        }
        parent.window.resizeTo(newWidth+100,newHeight+34);
        parent.window.moveTo((screen.width/2)-(document.ProductPic.width/2),(screen.height/2)-(document.ProductPic.height/2));

}

</script>
   
</head>

<body scroll="no" style="text-align:center;overflow:hidden;margin:0px; padding:0px" OnLoad="doIt();this.focus()">

<img name="ProductPic" src="loading.gif" border="0">

</body>
</html>
Avatar billede olebole Juniormester
09. maj 2003 - 13:47 #5
Hvis du reloader siden, der har åbnet vinduet, har du naturligvis problemer. Så kender den nye side og pop'en jo ikke hinanden  :)
Så må du lave din hovedside i et frameset - eller ud i noget cookie-snask ... men det sidste bliver noget rigtig rod  :o|

I øvrigt har du helt misforstået, hvor det skal anbringes. Sådan skal det bruges:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
    <title>Untitled</title>
<script type="text/javascript">
var myWin = {"closed":true};
function popup(url,name) {
myWin = window.open(url,name,"width=50,height=50,top=2000,left=2000,scrollbars=yes");
}
function tjek () {
    if (!myWin.closed) alert("Vinduet er åbent");
    else alert("Vinduet er ikke åbent");
}

</script>
</head>
<body>

<a href="java script:popup('loading.html','loadingvindue')">Test</a>
<button onclick="tjek()">TETS</button>

</body>
</html>

Men som sagt, kan du ikke reloade siden. Hvad skal du bruge det til - og hvorfor vil du checke, om vinduet er åbent?
/mvh
Avatar billede Slettet bruger
09. maj 2003 - 13:51 #6
jamen jeg skal netop reloade siden ;)

Sagen er at jeg har et script der f.eks. tager 10 sekunder at køre. Imens gider jeg ikke at brugeren tænker "hm det virker ikke" og trykker 27 gange på "kør" knappen.

Derfor denne popup, der skal lukke når scriptet er færdigt (reloader).

Øv øv...
Avatar billede olebole Juniormester
09. maj 2003 - 14:19 #7
Jamen ... kan du ikke bar sørge for popUp'en bliver lukket, når den er færdig med at køre script'et?
Avatar billede olebole Juniormester
09. maj 2003 - 14:22 #8
Er det i PHP skriver du bare:

<?

// Her står al din PHP-kode

print '<script type="text/JavaScript">top.close()</script>';

?>

Så lukker vinduet, når koden er kørt  :)
/mvh
Avatar billede Slettet bruger
09. maj 2003 - 15:03 #9
Desværre er popupvinduet kun en dummy, al koden køres i det oprindelige vindue.

Jeg forestillede mig at man kunne:

1. åbne popup når jeg trykker på min submit knap (onclick="osv")
2. køre kode i oprindeligt vindue
3. når koden er færdig lukke popup (myWin.close();)

Desværre er det jo nok som du siger ikke muligt at lukke vinduet når siden er genindlæst...

Simpelt, men åbenbart ikke så simplet igen :(
Avatar billede olebole Juniormester
09. maj 2003 - 15:23 #10
Nej, det kan du ikke. Men du kan jo poste formen til popUp-vinduet i stedet:

<script type="text/JavaScript">
var loadingvindue;
function popup() {
    loadingvindue = window.open("","loadingvindue","width=50,height=50,top=2000,left=2000,scrollbars=yes");
}
</script>
<form name="f" action="enside.php" target="loadingvindue" method="post">
  <input type="text">
</form>
<a href="#" onclick="popup();setTimeout("document.f.submit()",200);return false">Test</a>

----------------------
I din fil i popUp'en bruger du så PHP-funktionen flush(), der tvinger browseren til at udskrive:

<html>
her står al din HTML
</html>

<?
flush();

// Hele din PHP-kode

print '<script type="text/JavaScript">top.close();</script>';
?>

/mvh
Avatar billede olebole Juniormester
09. maj 2003 - 15:24 #11
Evt:

print '<script type="text/JavaScript">opener.location.reload(true);top.close();</script>';

Hvis siden skal refreshes
Avatar billede Slettet bruger
09. maj 2003 - 15:30 #12
hehe, ej så meget gider jeg ikke gøre ud af det. Hovedsiden udskriver nemlig en hel del oplysninger, og dem vil jeg gerne beholde.

Jeg fandt ud af at dette virker ok, selvom det er en fusket måde at lave det på:




upload.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
    <title>Untitled</title>
   
<script language="JavaScript">
function openWindow(url, name) {
myWin = window.open(url,name,"width=100,height=50,top=2000,left=2000,scrollbars=yes");
}
</script>

   
</head>

<body onload="openWindow('empty.html');myWin.close()">
<a href="#" onclick="java script:openWindow('loading.html')">Åbn vindue</a>
</body>
</html>




loading.html:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
    <title>Uploader</title>
   
<script>

var myWin = {"closed":false};

function doIt()
{
    if (self.innerWidth)
    {
        frameWidth = self.innerWidth;
        frameHeight = self.innerHeight;
    }
    else if (document.documentElement && document.documentElement.clientWidth)
    {
        frameWidth = document.documentElement.clientWidth;
        frameHeight = document.documentElement.clientHeight;
    }
    else if (document.body)
    {
        frameWidth = document.body.clientWidth;
        frameHeight = document.body.clientHeight;
    }
    else return;


        newWidth = document.ProductPic.width;
        newHeight = document.ProductPic.height;
        if (document.layers)
        {
            tmp1 = parent.outerWidth - parent.innerWidth;
            tmp2 = parent.outerHeight - parent.innerHeight;
            newWidth -= tmp1;
            newHeight -= tmp2;
        }
        parent.window.resizeTo(newWidth+100,newHeight+34);
        parent.window.moveTo((screen.width/2)-(document.ProductPic.width/2),(screen.height/2)-(document.ProductPic.height/2));

}
window.opener.document.all.tjek_aaben.value = "ost";
</script>
   
</head>

<body scroll="no" style="text-align:center;overflow:hidden;margin:0px; padding:0px" OnLoad="doIt();this.focus()">

<img name="ProductPic" src="loading.gif" border="0">

</body>
</html>



empty.html:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
    <title>Uploader</title>
   

   
</head>

<body>
</body>
</html>


Ikke mer pjat med det ;)
Avatar billede olebole Juniormester
09. maj 2003 - 15:35 #13
oki  ;o))
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