Avatar billede rsvend Nybegynder
19. maj 2004 - 16:42 Der er 3 kommentarer

onbeforeunload virker ikke i Safari browser

Jeg bruger dette kode:
<body bgcolor="#E0DFD8" onbeforeunload="java script: window.open('../popups/admin_freeDate.asp', '', 'height=10,width=10,top=0,left=0');">

Som virker fint i diverse browsere, men ikke i Safari (der kommer ingen popup) - browseren er ikke sat op til at blokere popups. Nogen forslag?

Jeg tror nok det skal være 'onbeforeunload' og ikke 'onunload' - jeg mener der var et eller andet problem med 'onunload'.
Avatar billede mm12010 Nybegynder
19. maj 2004 - 16:46 #1
så vidt jeg ved at browser-understøttelsen af onbeforeunload begrænset - dernæst skal det siges at man ikke kan/skal bruge pseudoprotokollen i eventhandlers:

onbeforeunload="java script: window.open('../popups/admin_freeDate.asp', '', 'height=10,width=10,top=0,left=0');">

skal være

onbeforeunload="window.open('../popups/admin_freeDate.asp','','height=10,width=10,top=0,left=0');">
Avatar billede roenving Novice
19. maj 2004 - 17:28 #2
onbeforeunload virker da kun i IE4+ ...

Se f.eks. http://blooberry.com/indexdot/html/tagpages/attributes/events.htm

-- du må finde andre metoder, hvis du vil have sådan en funktionalitet, og det er i hvert fald ikke nemt ...

-- problem(et) med onunload er, at den skal udføres før unload i virkeligheden udføres, da javascript ikke kan udføres udenfor for det adresserum, som hører til et konkret vindues-objekt !-)
Avatar billede olebole Juniormester
19. maj 2004 - 22:43 #3
<ole>

Man har nu nok tid til at åbne et vindue - man kan endda nå at traversere en form, høste variabler, danne en query-streng og åbne et vindue til at gemme værdier i. Vil man derimod til at submitte en form eller direkte tilbyde fortrydelse af sideskiftet, kommer event'en til kort.
Dette vil dog fungere fint:

<?
if ( isset($_GET["panicSaving"]) && $_GET["panicSaving"]<>"" ) {

    print "Gemmer følgende data:<br><xmp>";
    var_dump($_GET);
    print "</xmp>";
   
    # print "<script type=\"text/JavaScript\">window.close()</script>";
    exit;
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>TITLE</title>
<script type="text/JavaScript">
var submitting = false;
window.onunload = function() {
    if (submitting) return;
    var f = document.forms[0];
    var a = new Array();
    for ( i=0; i<f.length; i++ ) {
        a.push(f.elements[i].name + "=" + f.elements[i].value);
    }
    window.open("<?=$_SERVER["PHP_SELF"]?>?panicSaving=true&"+a.join("&"), "safeWin", "width=500,height=500");
}
</script>
</head>
<body>

<form action="<?=$_SERVER["PHP_SELF"]?>" method="get" onsubmit="submitting=true">
<input type="hidden" name="et_skjult_felt" value="Første skjulte felt">
<select name="et_navn">
    <option value="-1">Vælg ...</option>
    <option value="1">Bla 1</option>
    <option value="2">Bla 2</option>
    <option value="3">Bla 3</option>
</select><br>
<input type="text" name="et_tekst_felt"><br>
<input type="hidden" name="endnu_et_skjult_felt" value="Andet skjulte felt">

<button type="submit" name="knap">Send</button>
</form>

</body>
</html>

Nu ligger hele koden i ét dokument, men det kunne jo sagtens være en speciel 'gemme-fil', man loader i vinduet. Det er blot et eksempel  :)
Opera vil dog ikke være med på denne løsning, da den på flere punkter har en elendig event-håndtering  :o|
/mvh
</bole>
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