Question

J'ai une application asp.net qui fonctionne exclusivement sur IE7 (site Web interne).

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) afin que les nouvelles données s'affichent sur la page principale.

Le problème est que le navigateur se plaint de devoir republier la page. Existe-t-il un moyen de désactiver cette fonctionnalité?

Était-ce utile?

La solution

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

Autres conseils

Non, mais il existe une solution. Il est généralement jugé judicieux d’utiliser une redirection 302 immédiatement après la publication de données sur une page. Cela empêche cette popup de se produire. Permettez-moi d’élaborer.

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

2) Le serveur reçoit les données et agit en conséquence.

3) Au lieu de renvoyer le contenu à l'utilisateur, le serveur émet une redirection 302 dès qu'il a terminé de traiter la page (éventuellement, redirige l'utilisateur vers la même adresse exacte, si nécessaire)

4) La page que l'utilisateur verra est la page à laquelle vous avez demandé à son navigateur de se rediriger. Ils chargeront la page redirigée avec une requête GET standard. S'ils essaient d'actualiser la page, les données ne seront pas republiées. Problème résolu.

Il s'agit d'un problème lié à l'habituel " postback " façon d'ASP.NET. Si vous devez recharger une page sans cet avertissement, cette page doit provenir d'un GET et non d'un POST. Vous pouvez faire une Response.Redirect ("... ...") vous-même. Mais cela détruira l'utilisation de viewstate.

asp.net mvc résout ce problème, non pas seulement un problème ie7, mais une fonctionnalité de sécurité de la plupart des navigateurs. Aucune solution à ma connaissance, sauf que vous pourriez simplement mettre à jour le contenu du formulaire principal avec js plutôt que de recharger toute la page

Je ne crois pas qu’il existe un moyen de le faire. Pourquoi ne pas diriger la fenêtre parente vers une page sans rechargement.

javascript: window.opener.location = 'votre url'

autant que je sache, pas via vos scripts.

Vous pouvez essayer:

window.opener.location = '#';

Cela devrait éviter le repostage du navigateur. Et vous pouvez ajuster le nom de hachage si nécessaire.

Si vous passez de page1 à page2 et souhaitez empêcher le navigateur de 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>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top