Visualizzazione dei risultati da 1 a 7 su 7

Discussione: onbeforeunload

  1. #1

    onbeforeunload

    Ciao a tutti,
    sto impostando una funzione javascript che interviene sulla pagina alla generazione dell'evento "onbeforeunload".

    Avrei bisogno di impostare la mia funzione in base alla pagina di destinazione.
    Mi spiego meglio:
    - se l'evento unload è stato generato dal click ad un link interno al sito corrente non voglio generare nessun alert
    - mentre, se l'evento è stato generato dal click di un qualche elemento (chiudi, back,ecc) che porterà a chiudere la fnestra o a navigare su un altro sito, dovrei generare un alert.

    Qualcuno ha idea di come/dove reperire tale informazione?

    Grazie!

  2. #2
    codice:
    window.onload=function(){
       var goingout=false;
    
       var arr_a=document.getElementsByTagName('a');//tutti i link della pagina
       for (var i=0; i<arr_a.legth; i++){
           var a=arr_a[i];
           if(a.className=="ExternalLink"){//se il link ha la classe "ExternalLink" (In alternativa si potrebbero controllare i target="_blank")
               a.onclick=function(){
                   goingout=true;
               }
           }
       }
    }
    window.onbeforeunload=function(){
        if(goingout){
            alert('Vai via?');
        }
    }

  3. #3
    grazie mille, lo provo subito!

  4. #4
    Ecco, così funziona, l'unica cosa che non riesco a fare con l'attuale codice è personalizzare il messaggio del box, sarà sicuramente una svista... qualche suggerimento?

    Codice PHP:
    <?php
        
    if(isset($_SESSION['cart']) && sizeof($_SESSION['cart']) > 0){
        
    ?>
           <script type="text/javascript">
            $(document).ready(function(){
                var goingout = true;
                $('#headerPan a').click(function(){goingout = false});
                $('#leftPan a').click(function(){goingout = false});
                $('#rightPan a').click(function(){goingout = false});
                $('#footerPan ul li a').click(function(){goingout = false});
                $('#copyright a').click(function(){goingout = true});
                
                window.onbeforeunload = function (evt) {
                  var lang = '<?php echo($_SESSION['settings']['language'])?>';
                  var message = vocabulary[lang]['general_7'];
                  if (typeof evt == 'undefined') {
                    evt = window.event;
                  }
                  if (evt && goingout) {
                    evt.returnValue = message;
                    return message;
                  }
                }
            });
        </script>
        <?php    
        
    }
    ?>

  5. #5
    Fai prima a dire:
    Codice PHP:
    <?php
        
    if(isset($_SESSION['cart']) && sizeof($_SESSION['cart']) > 0){
        
    ?>
           <script type="text/javascript">
            $(document).ready(function(){
                var goingout = false;
                $('#copyright a').click(function(){goingout = true});
                
                window.onbeforeunload = function (evt) {
                  var lang = '<?php echo($_SESSION['settings']['language'])?>';
                  var message = vocabulary[lang]['general_7'];
                  if (typeof evt == 'undefined') {
                    evt = window.event;
                  }
                  if (evt && goingout) {
                    evt.returnValue = message;
                    return message;
                  }
                }
            });
        </script>
        <?php    
        
    }
    ?>
    Per quanto riguarda il messaggio, dovresti vedere dove è definito "vocabulary".

  6. #6
    nel dubbio l'ho modificato in questo modo, ma continua a non passare il messaggio

    codice:
    window.onbeforeunload = function (evt) {
    			  var lang = '<?php echo($_SESSION['settings']['language'])?>';
    			  if(lang == 'IT')
    			  	var message = "\nIl tuo carrello non è vuoto, sicuro di voler uscire?";
    			  else
    			  	var message = "\nYour cart is not empty, are you sure you want to leave?";
    			  if (typeof evt == 'undefined') {
    				evt = window.event;
    			  }
    			  if (evt && goingout) {
    				evt.returnValue = message;
    				return message;
    			  }
    			}

  7. #7
    controlla i valori di evt e goingout nella condizione if (evt && goingout)

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.