2010-04-12 21 views
5

Ho cercato per "scaricare" e "beforeunload" vincolante nel codice seguente, ma nessuno dei browser invia una richiesta:Ondemand javascript chiamata sulla finestra scarico utilizzando jQuery

$(window).bind('unload', function(){ 
     $.ajax({cache: false, 
     dataType: "script", 
      url: "test.php" 
     }); 
    }); 

Qualsiasi suggerimento?

+0

In quale browser stai eseguendo? Per molto tempo, Safari ha avuto problemi con l'implementazione corretta dei gestori di 'download'. Non sono sicuro che sia ancora vero. – Syntactic

risposta

6

Il browser non aspetta che il codice finisca ... sta funzionando bene :) Aggiungi un alert('hi') per vederlo in esecuzione.

Il problema riscontrato è tipico dei problemi unload, il browser si allontana molto prima che una richiesta venga attivata nel tuo caso ... Mi è permesso di passare alla pagina successiva. Questo è il modo in cui si comporta unload. È possibile effettuare la chiamata sincrona per trattenere l'utente lì, ma per favore, non chiamare .

L'evento unload è stato creato sulla finestra principalmente per ripulire tutto ciò che rimaneva nel DOM necessario; di più, quando la garbage collection non era valida come ora (e ancora non è in IE). ..non è stato davvero progettato con AJAX o metrica di monitoraggio in mente.

1

Basta impostare l'opzione async su false.

$(window).bind('unload', function(){ 
    $.ajax({ 
    cache: false, 
    async: false, 
    dataType: "script", 
     url: "test.php" 
    }); 
}); 
Problemi correlati