2010-08-12 7 views
4

J'ai ce code jQuery;La fenêtre avant la connexion affiche deux boîtes de dialogue

$(function() { 
    $(window).unbind("beforeunload"); 
    $(window).bind("beforeunload", function() { 
     return confirm("Really?"); 
    }); 
}); 

Quand je ferme ma fenêtre je reçois la demande de confirmation et si je frappe « Annuler » Je reçois une deuxième confirmation qui dit;

"Êtes-vous sûr de vouloir quitter cette page?"

« Faux »

« Appuyez sur OK pour continuer ou Annuler pour rester sur la page en cours. » Pourquoi est-ce que j'obtiens une deuxième boîte de dialogue et y a-t-il un moyen de la supprimer?

modifier

ont changé le code à;

$(function() { 
    $(window).bind("beforeunload", function() { 
     return "slappy?"; 
    }); 
}); 

Mais le message de confirmation n'apparaît pas. L'événement se déclenche parce que je peux mettre une alerte là-bas et voir l'alerte.

modifier 2

ont changé le code pour cela;

window.onbeforeunload = function() { 
    var txtBlog = $('#tbxNote').val(); 
    if (txtBlog != "") 
     return "You have not saved your blog entry."; 
} 

cela fonctionne mais il y a d'autres textes au-dessus et au-dessous de mon message;

"Êtes-vous sûr de vouloir quitter cette page?"

"Vous n'avez pas enregistré votre entrée de blog."

"Appuyez sur OK pour continuer ou sur Annuler pour rester sur la page actuelle."

+0

Cela se passe sur IE8. N'a pas vérifié FF – griegs

+0

Vous pouvez raccourcir cela en faisant '$ (window) .unbind (" beforeunload "). Bind (" beforeunload "), ...' mais cela dépend entièrement de vous. –

+0

Re edit 2: Comme Cory mentionné ci-dessous, il n'est pas possible de modifier ou de supprimer ce texte supplémentaire - sinon des sites Web malveillants pourraient dérouter les gens en affichant un message trompeur. –

Répondre

5

utiliser Just:

return "Really?"; 

L'événement beforeunload vous oblige à retourner une chaîne contenant le message que vous voulez afficher dans la boîte de dialogue standard « Êtes-vous sûr ».

+2

Et au cas où vous ne le saviez pas et que vous vous demandiez ... il n'y a aucun moyen possible de remplacer les messages "Are you sure ..." et "Press OK to ..." intégrés. –

+0

La confirmation ne se déclenche pas; $ (function() {$ (fenêtre) .bind ("beforeunload", function() {return () "Slappy?"; });} ); Des pensées? – griegs

+0

Voulez-vous dire que vous êtes passé de deux boîtes de dialogue à une boîte de dialogue, ou à zéro boîte de dialogue? –

Questions connexes