2008-09-18 6 views
1

J'ai une application asp.net fonctionnant exclusivement sur IE7 (site Web interne).Comment désactiver la boîte de dialogue d'avertissement de publication du navigateur

Lorsqu'un utilisateur doit entrer des données, j'ouvre une fenêtre enfant avec un formulaire. Lorsque le formulaire se ferme, il appelle javascript: window.opener.location.reload (true) pour que les nouvelles données s'affichent sur la page principale.

Le problème est que le navigateur se plaint de devoir rediffuser la page. Est-il possible de désactiver cette fonctionnalité?

Répondre

0

C'est parce que la page en window.opener vient d'une demande POST Peut-être que vous pouvez utiliser javascript: window.opener.location = window.opener .emplacement; faire juste une requête GET si les données peuvent être récupérées sans POST.

1

Ceci est un problème avec la manière habituelle de "publication" d'ASP.NET. Si vous avez besoin de recharger une page sans cet avertissement, cette page doit provenir d'un GET et non d'un POST. Vous pourriez faire un Response.Redirect ("...") vous-même. Mais cela détruira l'utilisation de viewstate.

1

asp.net mvc résout ce problème, ce n'est pas seulement un problème d'ie7 mais une caractéristique de sécurité de la plupart des navigateurs. Aucune correction que je connais, sauf que vous pouvez simplement mettre à jour le contenu dans le formulaire principal avec js plutôt que de recharger toute la page

0

Je ne crois pas qu'il existe un moyen de le faire. Au lieu de cela, pourquoi ne pas diriger la fenêtre parent vers une page sans rechargement.

javascript: window.opener.location = 'URL'

4

Non, mais il existe une solution. Il est généralement considéré comme une bonne conception d'utiliser une redirection 302 immédiatement après que quelqu'un publie des données sur une page. Cela empêche ce popup de se produire. Permettez-moi d'élaborer.

1) L'utilisateur remplit un formulaire et soumet des données via POST.

2) Le backend reçoit les données et agit sur lui.

3) Au lieu de retourner le contenu à l'utilisateur, le backend émet un redirection 302 dès son fait traitement de la page (peut-être rediriger l'utilisateur vers la même URL exacte, le cas échéant)

4 La page que l'utilisateur verra est la page à laquelle vous avez redirigé votre navigateur. Ils chargeront la page redirigée avec une requête GET standard. S'ils tentent d'actualiser la page, ils ne la rediffuseront pas. Problème résolu.

0

AFAIK, pas via vos scripts.

Vous pouvez essayer:

window.opener.location = '#'; 

Il devrait contourner le reposter du navigateur. Et, vous pouvez ajuster le nom de hachage au besoin.

0

Si vous passez de la page1 à la page2 et que vous souhaitez désactiver le navigateur pour revenir à la page 1, ajoutez ce qui suit en haut de la page1.

<script> 
if(window.history.forward(1) != null) 
       window.history.forward(1); 
</script> 
Questions connexes