2009-02-16 4 views
3

Dans l'événement window.onbeforeunload, existe-t-il un moyen de détecter si la nouvelle requête est un POST (sur la même page) ou un GET (accès à une page)? Ce serait aussi génial de voir le nouveau document.location.window.onbeforeunload détecter si POST ou GET

window.onbeforeunload = winClose; 
function winClose() { 
    //Need a way to detect if it is a POST or GET 
    if (needToConfirm) {  
     return "You have made changes. Are you sure you want?"; 
    } 
} 

Répondre

0

Cela ressemble à quelque chose que vous devez attacher à un formulaire ou à des liens spécifiques. Si l'événement est déclenché par un lien et qu'une chaîne de requête est remplie de variables, il agira comme un GET. S'il s'agit d'un formulaire, vous devrez vérifier la méthode, puis déterminer l'URL en fonction des données soumises dans le formulaire lui-même. Donc, la détection aurait lieu non pas dans la méthode window, mais dans la méthode click de vos liens, et dans les soumissions de formulaires.

/* Check method of form */ 
$("form").submit(function(){ 
    var method = $(this).attr("method"); 
    alert(method); 
}); 

/* Check method of links...UNTESTED */ 
$("a.checkMethod").click(function(){ 
    var isGet = $(this).attr("href").get(0).indexOf("?"); 
    alert(isGet); 
}); 
+0

Oui, je me demande comment je vérifie la méthode du javascript? par exemple quelque chose comme ça .. par exemple window.Method == "POST" – rid00z

12

Voilà comment je l'ai fait:

$(document).ready(function(){ 
    var action_is_post = false; 
    $("form").submit(function() { 
    action_is_post = true; 
    }); 

    window.onbeforeunload = confirmExit; 
    function confirmExit() 
    { 
    if (!action_is_post) 
     return 'You are trying to leave this page without saving the data back to the server.'; 
    } 
}); 
+0

Merci, c'est exactement ce que je cherchais! – Annagram

Questions connexes