[JavaScript] alert of confirm bij sluiten van browservenster

Pagina: 1
Acties:

  • EmilneM
  • Registratie: December 2001
  • Laatst online: 15-09-2023
Een ASP.NET-database-applicatie opent in een nieuw venster met de window.Open-functie (javascript).

Nu wil ik er voor zorgen dat de gebruiker het venster met de applicatie niet met één druk op de knop kan sluiten. Invoer in de database kan onvolledig zijn en locks op records kunnen nog actief zijn, wat zorgt voor conflicten.

Volgens mij is het niet mogelijk het kruisje rechtsboven te disablen net als bijv. de min/max-button d.m.v. 'resizable=no' (of heb ik dit verkeerd?).

Is er dan een andere mogelijkheid? Ik dacht zelf bijvoorbeeld aan onderstaande mogelijkheden:
  • Bij een mouseclick op het kruisje d.m.v. een javascript-alert melden dat het venster niet gesloten kan worden.
  • Met een javascript-confirm vragen of de gebruiker het venster daadwerkelijk wil sluiten.
Is één van deze of een andere mogelijkheid realiseerbaar?

  • André
  • Registratie: Maart 2002
  • Laatst online: 18-05 16:30

André

Analytics dude

Ja met het onunload event, daarmee kun je de gebruiker eerst een vraag stellen of hij echt het window wil sluiten :)

  • The Lord
  • Registratie: November 1999
  • Laatst online: 16:53
EmilneM schreef op maandag 20 december 2004 @ 15:19:
Nu wil ik er voor zorgen dat de gebruiker het venster met de applicatie niet met één druk op de knop kan sluiten. Invoer in de database kan onvolledig zijn en locks op records kunnen nog actief zijn, wat zorgt voor conflicten.
En wat als de browser crasht, of wellicht de hele PC? Dan heb je nog steeds je locks en onvolledige data.

In mijn optiek is de architectuur van de applicatie niet goed als er een gerede kans bestaat op dergelijke problemen. Ik zou zelf voor een afhandeling van de data gaan door gebruik te maken van transacties.

geeft geen inhoudelijke reacties meer


  • EmilneM
  • Registratie: December 2001
  • Laatst online: 15-09-2023
En wat als de browser crasht, of wellicht de hele PC? Dan heb je nog steeds je locks en onvolledige data.
Tuurlijk, die mogelijkheid blijft altijd. Het venster moet dan ook gewoon gesloten kunnen worden. Ik moet echter uitgaan van de domheid van de gebruiker die per ongeluk tijdens de aanmaak van bijvoorbeeld een order op het kruisje klikt.
Ja met het onunload event, daarmee kun je de gebruiker eerst een vraag stellen of hij echt het window wil sluiten :)
Kun je me een voorbeeld geven? Deze heb ik zelf geprobeerd:
JavaScript:
1
2
3
4
5
<script language='javascript'>
    function closeButton(){
        return confirm('Venster sluiten?')
    }
</script>

[ Voor 32% gewijzigd door EmilneM op 20-12-2004 15:33 ]


  • born2tweak
  • Registratie: November 2002
  • Laatst online: 22:05
Je zou het kunnen afvangen door aan de server kant een event te programmeren. Op die manier kun je iedere aktie van de gebruiker afvangen, zelfs de pc-crash of een process kill.

Je kunt dan een functie schrijven die afgaat bij een session-end of een application-end.

een voorbeeldje van een unload functie in javascript:
code:
1
2
3
4
5
6
7
8
9
10
11
12
function venstersluiten()
{
   if (confirm('Wilt u het venster echt sluiten?')
      window.close();
   else 
      {
        // voer afsluit code uit
      }
}

<body onunload="venstersluiten();">
</body>

[ Voor 36% gewijzigd door born2tweak op 20-12-2004 15:55 ]


  • EmilneM
  • Registratie: December 2001
  • Laatst online: 15-09-2023
born2tweak schreef op maandag 20 december 2004 @ 15:37:
Je zou het kunnen afvangen door aan de server kant een event te programmeren. Op die manier kun je iedere aktie van de gebruiker afvangen, zelfs de pc-crash of een process kill.

Je kunt dan een functie schrijven die afgaat bij een session-end of een application-end.
Functies voor session/application-ends zijn er maar deze worden niet getriggerd bij het sluiten van een browservenster...

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 21:59

crisp

Devver

Pixelated

Intentionally left blank


  • Clay
  • Registratie: Oktober 1999
  • Laatst online: 25-02 11:17

Clay

cookie erbij?

ook: http://msdn.microsoft.com...events/onbeforeunload.asp

werkt idd prima (in IE)

code:
1
2
3
window.attachEvent('onbeforeunload', function(event){
    event.returnValue = 'Lorem ipsum dolor!';
});


edit:
wtf


zo doet moz het ook :? :{

code:
1
2
3
window.onbeforeunload = function() {
    return 'Lorem ipsum dolor!';
}

[ Voor 35% gewijzigd door Clay op 20-12-2004 15:50 ]

Instagram | Flickr | "Let my music become battle cries" - Frédéric Chopin


  • EmilneM
  • Registratie: December 2001
  • Laatst online: 15-09-2023
Probleem is dan echter dat er dynamische pagina's in de window draaien. Elke keer als er een post-back is verschijnt dan dus de melding...

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 21:59

crisp

Devver

Pixelated

EmilneM schreef op maandag 20 december 2004 @ 15:52:
[...]


Probleem is dan echter dat er dynamische pagina's in de window draaien. Elke keer als er een post-back is verschijnt dan dus de melding...
Er wordt daar ook uitgelegt hoe je dat dus kan omzeilen ;)
Clay schreef op maandag 20 december 2004 @ 15:47:
[...]
edit:
wtf


zo doet moz het ook :? :{

code:
1
2
3
window.onbeforeunload = function() {
    return 'Lorem ipsum dolor!';
}
Ik heb een tijdje terug wel een request gezien op Bugzilla om het in te bouwen, blijkbaar hebben ze dat dus inmiddels gedaan :)

Intentionally left blank

Pagina: 1