J'affiche certains enregistrements dans une table éditable. Lorsque l'utilisateur tente de recharger la table lors de la modification d'un enregistrement, une fenêtre contextuelle l'avertit à propos des données non sauvegardées.
function cancelProcess()
{
if(noEditedRecords !=0)//number of edited records in the table
{
var processConfirmation = confirm("You've Edited "+ noEditedRecords +" Records. Are You sure to undo the Changes made?");
if (processConfirmation ==true){
window.onbeforeunload = null;
window.location.reload();
}
}
}
Lorsqu'il clique sur OK pour recharger la page, Firefox affiche l'invite suivante:
Pour afficher cette page, Firefox doit envoyer des informations qui répètent toute action (telle qu'une recherche ou une confirmation de commande) effectuée précédemment.
Et lorsque vous ouvrez la même page dans Chrome, aucune invite de ce type n'apparaît.
J'ai essayé d'éviter cela en définissant window.onbeforeunload = null;
, mais la fenêtre Invite y apparaît toujours.
J'ai aussi essayé en modifiant la configuration de Firefox:
browser.sessionstore.postdata
Changé de 0 à 1 comme suggéré dans la page de support de Mozilla.
Mais rien n'a fonctionné .. Comment puis-je empêcher l'invite?
En utilisant
window.location=window.location;
Au lieu de
location.reload();
travaille pour moi.
J'ai résolu ceci et envoyé des données en tant queOBTENIRau lieu dePOST,
Cela ne convient pas à tous les besoins mais ça marche ....
J'utilisais aussi location.reload ();
window.opener.location.href = window.opener.location;
J'ai trouvé la décision ici
(Testé avec Firefox 32 et Chrome 38 avec succès.)
Le comportement est correct. Selon w3schools reload a un paramètre forceGet qui est faux par défaut, et si vous avez un POST submit, le navigateur essaiera de le renvoyer POST données, et à ce titre, il a besoin de votre confirmation. Firefox fait cela correctement, et Google Chrome se comporte comme si sa valeur par défaut était true pour forceGet
http://www.w3schools.com/jsref/met_loc_reload.asp
alors que window.location=window.location
ou window.location=window.location.href
(ou toute autre variante de celui-ci) fonctionne la plupart du temps, lorsque vous utilisez une URL d'ancre telle que http: //www.google.com#test ne sera pas actualisée avec cette méthode. Le navigateur fera exactement la même chose que lorsque vous êtes déjà sur google.com et que vous modifiez l'URL en ajoutant #test. Le navigateur essaiera simplement de localiser la balise d'ancrage dans la page portant le nom test et de la faire défiler sans actualiser votre navigateur.
La solution qui fonctionne dans ce cas, ainsi que dans tout autre cas que j'ai rencontré serait window.location.reload(true);
J'espère que cela t'aides,
Alexandru Cosoi
Le moyen d'éviter cette invite est de ne pas créer de situation dans laquelle un utilisateur tente de recharger une page de résultat POST.
Essaye ça.
setTimeout (function () {
window.location.reload();
},0);