2015-07-19 1 views
0

Ma question ne concerne pas comment remplacer la fonction d'alerte, puis la décorer comme bon vous semble. Mon problème est que lorsque vous substituez la fonction d'alerte comme ceci:Substitution de la fonction d'alerte Javascript native pour capturer les alertes de chargement en cours

window.alert = function(str){console.log('alert is called: '+ str);}

Pour une page avec un gestionnaire enregistré pour l'événement onbeforeunload comme ceci:

window.onbeforeunload= function(){return 'bye!';}
Il est censé faire apparaître une boîte d'alerte avec la chaîne "bye" avant de quitter une page et vous pourriez l'attraper en utilisant votre fonction d'alerte personnalisée. Mais le problème est que votre fonction d'alerte personnalisée ne sera pas appelée dans ce cas. Il semble que le navigateur appelle une autre fonction d'alerte pour y mettre votre chaîne. Comment puis-je remplacer cette fonction d'alerte?

+1

Les navigateurs ne fournissent aucun moyen de le faire. – Pointy

+0

Firefox réécrit même la chaîne fournie par l'utilisateur, Existe-t-il un moyen d'extraire au moins la chaîne de l'utilisateur pour l'événement onbeforeunload? – Alex

Répondre

1

Selon MSDN

Remarques Lorsqu'une chaîne est affectée à la propriété returnValue de window.event, une boîte de dialogue qui donne aux utilisateurs la possibilité de rester sur le document en cours et de conserver la chaîne a été affecté à elle. L'instruction par défaut qui apparaît dans la boîte de dialogue, "Êtes-vous sûr que vous voulez quitter cette page? ... Appuyez sur OK pour continuer, ou Annuler pour rester sur la page actuelle.", Ne peut pas être supprimé ou modifié .

Ceci n'est pas une alerte, c'est une confirmation que le navigateur fournit et nous ne pouvons pas le modifier. S'il vous plaît trouver le lien https://msdn.microsoft.com/en-us/library/ms536907(VS.85).aspx