JavaScript: OnBeforeUnload, maar niet bij volgen links

Pagina: 1
Acties:

  • lnx
  • Registratie: November 2000
  • Laatst online: 18-06-2025
ik wil voor onze website iets maken dat een user gewaarschuwd wordt of hij alle data al gesubmit heeft.
Echter is het probleem dat deze data zich niet in 1 pagina bevind, maar in meerdere.
Dit betekend dus dat er een aantal links gevolgd worden tijdens het invullen van de gegevens.
Pas als alles gesubmit is, wordt er een cookie geplaatst dat de user klaar is.

Tijdens het sluiten van de browser moet er dus gecheckt worden of dit cookie aanwezig is.

Dit werkt op zich prima met OnBeforeUnload, echter krijgt nu de user telkens bij het volgen van een link de waarschuwing dat de formulieren nog niet verstuurd zijn...

Mijn vraag is dus, is er een manier om OnBeforeUnload, of iets dergelijks, ALLEEN te gebruiken bij het fysiek sluiten of wegbrowsen van de pagina, maar niet bij het volgen van links binnen de pagina?

neh mijn computers zijn niet goed genoeg om hier te noemen :)


  • André
  • Registratie: Maart 2002
  • Laatst online: 19-08 12:30

André

Analytics dude

Dan check je bij de onbeforeunload functie wat de event.srcElement is, en als dat een link is hoef je niets te doen.

  • lnx
  • Registratie: November 2000
  • Laatst online: 18-06-2025
Ik krijg alleen maar een null uit event.srcElement,

heb het ook zo gecheckt:

onBeforeUnload="javascript:alert(event.srcElement);"

en ook geprobeerd om event.srcElement.tagName & .src te krijgen, echter krijg ik daar helemaal niets uit.

neh mijn computers zijn niet goed genoeg om hier te noemen :)


  • RM-rf
  • Registratie: September 2000
  • Laatst online: 09:42

RM-rf

1 2 3 4 5 7 6 8 9

de srcElement retourneert volgens mij niet de geklikte A:
mogelnlijk kun je wel de event.type opvragen.

maar slimmer lijkt het om de 'toegestane' links binnen de site gewoon apart te specificeren en hiervoor een tweede check via een global variabele te plaatsen

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


  • Morrar
  • Registratie: Juni 2002
  • Laatst online: 22-08 08:30
Is het niet een optie om bij de links gewoon wat code op te nemen die de OnBeforeUnload-code uitschakelt?

  • lnx
  • Registratie: November 2000
  • Laatst online: 18-06-2025
de event.type retourneerd enkel "beforeunload",

over jouw alternatief, als ik toegestane links definieer, en check met de gevolgde link, hoe kom ik er dan achter welke link er gevolgd is? hoe kan ik die variabele opvragen of meegeven?.

neh mijn computers zijn niet goed genoeg om hier te noemen :)


  • lnx
  • Registratie: November 2000
  • Laatst online: 18-06-2025
Morrar, volgens mij is OnBeforeUnload niet uit te schakelen.

neh mijn computers zijn niet goed genoeg om hier te noemen :)


  • Morrar
  • Registratie: Juni 2002
  • Laatst online: 22-08 08:30
Tis ff snel een frutseltje maar zoiets:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<html>
<head>
<script language="Javascript">
Linked = false;

function Schreeuw()
{   if(!Linked)
    {    self.alert("HEEEE, niet alles is gesubmit!!!");
    }
}
</script>
</head>
<body onbeforeunload="Schreeuw();">
<a href="test2.htm" onclick="Linked = true;">KLIK</a>
</body>
</html>

[ Voor 48% gewijzigd door Morrar op 07-03-2003 17:22 ]


  • lnx
  • Registratie: November 2000
  • Laatst online: 18-06-2025
Morrar, dank je ,

ik denk dat jouw voorbeeld inderdaad de enige oplossing voor dit probleem is.

neh mijn computers zijn niet goed genoeg om hier te noemen :)


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:14

Bosmonster

*zucht*

Mwah, zoiets moet ook werken denk ik:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function checkSubmit () {
    alert ("U heb wel alles ingevuld he :?");
}

function evtLinkClicked () {
    window.onbeforeunload = null;
}

function excludeLinks () {
    var linksArray = document.getElementsByTagName("A");

    for (var i=0; i<linksArray.length; i++) {
        linksArray.onclick = evtLinkClicked;
    }
}

window.onbeforeunload = checkSubmit;
window.onload = excludeLinks;

[ Voor 28% gewijzigd door Bosmonster op 08-03-2003 03:03 . Reden: bedtijd denk ik ;) ]


  • lnx
  • Registratie: November 2000
  • Laatst online: 18-06-2025
Thanks Bosmonster, dat maakt het een stuk makkelijker :)

neh mijn computers zijn niet goed genoeg om hier te noemen :)


  • lnx
  • Registratie: November 2000
  • Laatst online: 18-06-2025
Bosmonster schreef op 08 maart 2003 @ 02:58:
Mwah, zoiets moet ook werken denk ik:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function checkSubmit () {
    alert ("U heb wel alles ingevuld he :?");
}

function evtLinkClicked () {
    window.onbeforeunload = null;
}

function excludeLinks () {
    var linksArray = document.getElementsByTagName("A");

    for (var i=0; i<linksArray.length; i++) {
        linksArray.onclick = evtLinkClicked;
    }
}

window.onbeforeunload = checkSubmit;
window.onload = excludeLinks;
Heel klein foutje in excludeLinks,

deze versie werkt perfect:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function checkSubmit () {    
    alert ("U heb wel alles ingevuld he :?");
}

function evtLinkClicked () {
    window.onbeforeunload = null;
}

function excludeLinks () {
    var linksArray = document.getElementsByTagName("A");
    //alert (document.getElementsByTagName('A')); 
    for (var i=0; i<linksArray.length; i++) {
        linksArray[i].onclick = evtLinkClicked;
    }
}

window.onbeforeunload = checkSubmit;
window.onload = excludeLinks;

neh mijn computers zijn niet goed genoeg om hier te noemen :)


  • lnx
  • Registratie: November 2000
  • Laatst online: 18-06-2025
Echter 1 nadeel,
als iemand op de back-button klikt, wordt de onbeforeunload nog wel uitgevoerd...
iemand enig idee hoe dat op te lossen is? :)

neh mijn computers zijn niet goed genoeg om hier te noemen :)

Pagina: 1