Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    Non eseguire funzione al refresh della pagina

    Buon giorno, ho questa funzione che eseguo alla chiusura del browser e/o della scheda.
    codice:
    window.onbeforeunload = function() {//chrome,firefox, IE e Safari funziona, con Opera "NO"
    			//return "Bye now!";
    			$.ajax({
    				  type: "POST",
    				  url: "tab/inLogout.php",
    				  success: function(html)
    				  {
    				  	//alert("Uscita");
    					$("#cercaFile").html(html);
    				  },
    				  error: function()
    				  {
    					alert("Chiamata fallita, si prega di riprovare...");
    				  }
    				});
    		};
    Mi sono accorto però, che se faccio il refresh della pagina questa funzione si attiva nuovamente.
    Domanda: come posso evitare questo?

    Grazie mille.

  2. #2
    oppure ho fatto in questo modo:
    codice:
    <body  onbeforeunload="return myFunction()">
    
    
    function myFunction(){
    $.ajax({
                      type:"POST",
                      url:"tab/inLogout.php",
                      success:function(html)
                      {
                        //alert("Uscita");
                        $("#cercaFile").html(html);
                      },
                      error:function()
                      {
                        alert("Chiamata fallita, si prega di riprovare...");
                      }
                    });
    }
    Ma il problema rimane, sul refresh della pagina...
    Vorrei gestire il tutto attraverso il keycode 116(F5), ma come?
    Grazie.

  3. #3
    ho trovato queste soluzioni cercando sul web:
    codice:
    //disabilito il pulsante F5 ed il ctrl+R
    function my_onkeydown_handler() {
    			var dis = true;
    			switch (event.keyCode) {
    				case 116 : // 'F5'
    					event.preventDefault();
    					event.keyCode = 0;
    					window.status = "F5 disabled";
    					break;
    				case 82 : //Ctrl+R button
    					event.preventDefault();
    					event.keyCode = 0;
    					window.status = "Right Button disabled";
    					break;
    			}
    		}
    		document.addEventListener("keydown", my_onkeydown_handler);
    
    
    //disablito il tasto destro del mouse cosi non può cliccare su "ricarica"
    $(document).bind("contextmenu", function (e) {//Right Click is Disabled
    			var dis = true;
    			e.preventDefault();
    		});
    Però non capisco una cosa.
    Se con il mouse vado nella barra degli indirizzi e premo su invio, si riattiva la funzione:
    codice:
    window.onbeforeunload = function() {
    Non capisco una cosa, il comando presente nel body,onbeforeunload non dovrebbe attivarsi, come recita testualmente "un momento prima di uscire"? Perché se aggiorno la pagina come dicevo prima si attiva?Non sto mica chiudendo il browser e/o la scheda.
    MI Spiegate questo?
    Grazie.

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Perché non è un evento standarizzato (come è il click) alcuni browser intercettano la sola chiusura altri anche il refresh
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    grazie come sempre...
    1) Hai mai gestito il logout attraverso la chiusura del browser e/o della scheda?
    2) tu come gestiresti il tutto?

    grazie.

  6. #6
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Non hai alternative a quello che già fai
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  7. #7
    quindi non posso farci nulla se l'utente con il mouse va nella barra degli indirizzi e preme invio,
    oppure clicca sul bottone aggiorna del browser, quella funzione comunque viene richiamata.


    Non c'è altro modo per individuare se l'utente fa queste due operazioni?




  8. #8
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Quote Originariamente inviata da ANTAGONIA Visualizza il messaggio
    quindi non posso farci nulla se l'utente con il mouse va nella barra degli indirizzi e preme invio,
    oppure clicca sul bottone aggiorna del browser, quella funzione comunque viene richiamata.


    Non c'è altro modo per individuare se l'utente fa queste due operazioni?



    No, ma puoi usare i cookie
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  9. #9
    so come funzionano i cookie, e vorrei sapere da te, come gestiresti questa cosa.
    grazie mille.

  10. #10
    una curiosità.
    Nell'url ho il carattere speciale # seguito da top, che attraverso questo script mi torna in alto:
    codice:
    $( document ).ready(function() {
    	parent.top.location.href = '#top';//ad ogni click, la pagina deve posizionarsi in alto
    });
    Poi attraverso questo cerco nell'url se c'è questo carattere speciale:
    codice:
    var miaStringa = parent.top.location.href; // Definisce la stringa
    document.write(miaStringa); // Stampa a video la stringa
    		 
    var trova = miaStringa.indexOf("#"); // Ricerca un carattere nella stringa
    if (trova)
    {
    	window.alert("Il carattere è presente"); // trovato
    }
    else
    {
    	window.alert("Il carattere non è presente"); // non trovato
    }
    Ho notato che, se vado nella barra degli indirizzi e invio, oppure clicco sul bottone aggiorna del browser, ovviamente mi restituisce il messaggio "Il carattere è presente."

    Quindi pensavo di controllare l'attivazione o meno della funzione "window.onbeforeunload = function() {" attraverso i controlli di cui sopra esempio:
    codice:
    var miaStringa = parent.top.location.href; // Definisce la stringa
    document.write(miaStringa); // Stampa a video la stringa
    		 
    var trova = miaStringa.indexOf("#"); // Ricerca un carattere nella stringa
    
    window.onbeforeunload = function(trova) {
    if (trova)
    {
           //->NON ESEGUE NULLA
    }
    else
    {
    	$.ajax({
    		  type: "POST",
    		  url: "inLogout.php",
                      data: "user="+uid,
    		  success: function(html)
    		  {
    			$("#cercaFile").html(html);
    		  },
    		  error: function()
    		  {
    			alert("Chiamata fallita, si prega di riprovare...");
    		  }
    	});
    }
    }
    Ma ho notato, che l'if non lo considera, e ovviamente va sempre direttamente sull'else.
    Perchè?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.