Frage

Ich habe eine asp.net Anwendung, die ausschließlich auf IE7 (interne Website) ausgeführt wird.

Wenn ein Benutzer Daten eingeben muss, Pop ich ein Kind Fenster mit einem Formular oben. Wenn das Formular schließt, ruft sie javascript:. Window.opener.location.reload (true), so dass die neuen Daten auf der Hauptseite angezeigt werden

Das Problem ist, dass der Browser beschwert sich, dass er die Seite umbuchen müssen. Gibt es eine Möglichkeit, diese Funktion zu deaktivieren?

War es hilfreich?

Lösung

Es ist, weil die Seite in window.opener von einer POST-Anfrage kommt Vielleicht können Sie verwenden JavaScript: window.opener.location = window.opener.location; nur eine GET-Anforderung zu tun, wenn die Daten können ohne POST abgerufen werden.

Andere Tipps

Nein, aber es gibt eine Lösung. Sein allgemein als gutes Design eine 302-Umleitung unmittelbar nach jemandem Beiträgen Daten auf einer Seite zu verwenden. Dadurch wird verhindert, dass die Pop-up jemals auftreten. Erlauben Sie mir, zu erarbeiten.

1) Der Nutzer füllt ein Formular und sendet Daten über POST.

2) Das Backend empfängt die Daten und wirkt auf sie.

3) Anstatt den Inhalt an den Benutzer zurückkehrt, das Backend gibt eine 302-Umleitung, sobald ihre getan Verarbeitung der Seite (möglicherweise den Benutzer Umleitung zurück auf die exakt gleiche URL, wenn nötig)

4) Die Seite, die der Benutzer sehen, ist die Seite, die Sie ihren Browser zu umleiten erzählt. Sie werden die umgeleiteten Seite mit einer Standard-GET-Anfrage laden. Wenn sie versuchen, die Seite zu aktualisieren, wird es nicht die Daten umbuchen. Problem gelöst.

Dies ist ein Problem mit dem üblichen „Postback“ Weg von ASP.NET. Wenn Sie eine Seite ohne diese Warnung nachladen müssen, müssen Sie diese Seite von einem GET kommen, kein POST. Sie könnten eine Response.Redirect ( „...“) selbst tun. Aber das wird die Verwendung von Ansichtszustand zerstören.

asp.net Mvc behebt dieses Problem, nicht ein IE7 nur Problem, sondern ein Sicherheitsmerkmal der meisten Browser. Kein Update, das ich von außer Sie weiß, kann nur den Inhalt in der Hauptform aktualisiert mit js anstatt die gesamte Seite neu zu laden

Ich glaube nicht, dass es einen Weg gibt, das zu tun. Stattdessen, warum nicht das übergeordnete Fenster ohne Neuladen auf einer Seite verweisen.

javascript: window.opener.location = 'Ihre URL'

AFAIK, nicht über Ihre Skripte.

Sie könnten versuchen:

window.opener.location = '#';

Es sollte den Browser Umbuchung umgehen. Und, können Sie den Hash-Namen nach Bedarf anpassen.

Wenn Sie von Seite1 zu page2 bewegen, und wollen aus geht zurück auf Seite 1 den Browser deaktivieren, fügen Sie den folgenden an der Spitze der page1.

<script>
if(window.history.forward(1) != null)
                 window.history.forward(1);
</script>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top