2012-05-16 17 views
11

Si prega di controllare il mio codice nel browser Chrome, se si preme aggiornamento verrà richiesto con 2 opzioni.Javascript Come chiamare una funzione quando scegliamo Rimanere sulla pagina in Chrome

  1. uscire da questa pagina e
  2. rimanere su questa pagina

quando clicco sul 2. Rimanere su questo pulsante Pagina si deve attivare la funzione personalizzata displayMsg (

Può un e uno mi fornisce una soluzione?

<script type="text/javascript"> 
function displayMsg() { 
    alert('my text..'); 
} 
</script> 
<script type="text/javascript"> 
window.onbeforeunload = function(evt) { 
    var message = 'Please Stay on this page and we will show you a secret text.'; 
    if (typeof evt == 'undefined') { 
     evt = window.event; 
    }  
    if (evt) { 
     evt.returnValue = message; 
     return message; 
    } 
    trace(evt); 
} 
</script> 

risposta

6

utilizzare un timer per l'ascolto per la variabile cambiamento:

var vals=0; 
function displayMsg() { 
    alert('my text..'); 
} 
window.onbeforeunload = function evens(evt) { 
var message = 'Please Stay on this page and we will show you a secret text.'; 
    if (typeof evt == 'undefined') { 
     evt = window.event; 
    }  
    timedCount(); 
    vals++; 
    if (evt) { 
     evt.returnValue = message ; 
     return message ; 
    } 
    trace(evt); 
} 

function timedCount() 
{ 
t=setTimeout("timedCount()",100); 
if(vals>0) 
{ 
    displayMsg(); 
    clearTimeout(t); 
} 
} 
+0

guarda anche a questo [listening-for-variable-changes-in-javascript-or-jquery] (http://stackoverflow.com/questions/1759987/listening-for-variable-changes-in-javascript-or -jquery) –

+1

Script eccellente! Grazie mille per aver dedicato del tempo ad includere anche la mia funzione displayMsg() e renderla facile da usare direttamente senza ulteriori modifiche :) –

+0

Grazie a "Perdickss", il tuo codice funziona anche con il browser IE! –

4

È possibile utilizzare una combinazione dei onbeforeunload e onunload eventi, impostando un timer nel primo e di compensazione che in quest'ultimo:

var showMsgTimer; 

window.onbeforeunload = function(evt) { 
    var message = 'Please Stay on this page and we will show you a secret text.'; 
    showMsgTimer = window.setTimeout(showMessage, 500); 

    evt = evt || window.evt; 
    evt.returnValue = message; 

    return message; 
} 

window.onunload = function() { 
    clearTimeout(showMsgTimer); 
} 

function showMessage() { 
    alert("You've been trolled!"); 
} 

Questo funziona perché l'evento onunload non spara quando l'utente sceglie di rimanere sulla pagina.

+0

op vuole "quando clicco sul 2. Rimanere su questo pulsante page si deve attivare la mia funzione displayMsg personalizzato()", non la pagina congedo –

+0

@Ravi: se si legge il codice o provato, si farebbe vedi che è esattamente quello che fa. Se scegli di rimanere sulla pagina mostra un messaggio. Se te ne vai, non è così. –

+0

sono d'accordo, ma invocherà quando si fa clic su lasciare anche la pagina. controllalo qui http://jsfiddle.net/VuPcf/ –

1

Si prega di utilizzare queste righe di codice, funziona correttamente.

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"> 
    </script> 
    <script type="text/javascript"> 
    $(function(){ 
    $(window).bind('beforeunload', function(){ 
     return 'Your Data will be lost :('; 
    }); 
    }); 
    </script> 
Problemi correlati