Ecco alcuni test di esempio HTML:evento onbeforeunload è troppo entusiasta in IE9
<!DOCTYPE html>
<html>
<body>
<a href="javascript:alert('Not going anywhere!');">Go nowhere 1</a>
<a href="javascript:void(0);" onclick="alert('Not going anywhere!');">Go nowhere 2</a>
<a href="http://www.google.com">Go somewhere</a>
<script type="text/javascript">
window.onbeforeunload = function() { return "Really leave?"; };
</script>
</body>
</html>
Questo è disponibile come una pagina di lavoro qui: timjeanes.com/ie9_onbeforeunload.htm
In Firefox, Chrome e Safari, ottengo il comportamento che voglio . Cioè, facendo clic su uno dei primi due collegamenti viene visualizzata una finestra di avviso; facendo clic sul terzo link (o altrimenti navigando) mostra "Sei sicuro di voler lasciare questa pagina?" Messaggio.
Tuttavia, in IE9, "Sei sicuro di voler uscire da questa pagina?" messaggio mostra anche quando si fa clic su uno dei primi due collegamenti, anche se non è in corso alcuna navigazione - stiamo solo eseguendo alcuni javascript.
C'è qualcosa che sto facendo male? O c'è un bel workaround per IE?
Un'opzione sarebbe utilizzare href = "#" e inserire il mio javascript nell'onClick. Non ne sono entusiasta perché porta l'utente in cima alla pagina e la mia pagina di vita reale è piuttosto alta.
Non ho testato in altre versioni di IE.
È davvero icky inserire il tuo JavaScript nel "href" in ogni caso. Inseriscilo nell'attributo event handler o, meglio ancora, allegalo dinamicamente con un codice JavaScript discreto e separato. Se il gestore dell'evento annulla l'azione predefinita del clic, il browser non scorrerà la pagina. – Pointy
Sì, sto usando javascript non invadente nella vita reale; Volevo solo mantenere le cose brevi nel codice di esempio. Metterlo in href era dimostrare che non era una soluzione. Grazie comunque. – teedyay
OK, prosegui :-) – Pointy