2009-08-21 6 views
1

Idee ist, Nachricht anzuzeigen, die inuser muser, dass Ajax Teil der Anwendung wokr falsch funktioniert, wenn er "zurück" -Taste verwendet. Ja, es gibt viele Diskussionen, aber keine Lösungen. Beste von dem, was ich gefunden habe: Speichern Sie Informationen über die letzte Seite auf der Serverseite, und überprüfen Sie die aktuelle Seite gegen Server-Informationen von Ajax. Aber auf diese Weise wäre es unmöglich, 2 Browserfenster von demselben Benutzer zu verwenden.Wie erkennt man die geöffnete Seite des Benutzers mit der BACK-Taste im Browser?

+4

Wie wäre es, wenn Ihre App mit der Zurück-Schaltfläche funktioniert? Wenn ich mich richtig erinnere, werden etwa 30% der Webnavigation mit Zurück/Vorlauf ausgeführt. Bitte brich meinen Browser Chrome nicht. – Eevee

Antwort

0

Die wirkliche Lösung besteht darin, den Client den Zustand beizubehalten, anstatt Ihren Server. Sie brechen die Gesetze des Internet, wenn Sie so viel Client-Zustand auf dem Server behalten, dass die Zurück-Taste nicht :)

+0

Ich stimme zu, dass es mehr korrekt wäre, um es nachher arbeiten zu lassen. Dies ist jedoch außerhalb des Umfangs und des Budgets. – st78

1

Sie wollen nicht funktionieren könnte mit der URL # (Raute) entwickeln speichern Client-Zustand

einen Blick auf http://www.asual.com/swfaddress/, wird sie von Flash und ajax zu behandeln Browser-History mit ajax verwendet,

Silverlight 3.0 eine ähnliche Technik für die Verwendung der # (Raute) in der uRL für Zustand verwendet.

+1

Falls nicht klar ist, bedeutet diese Technik, dass der Inhalt immer dynamisch von einem Skript in Ihrer Site geladen wird. Es bedeutet, dass Sie kontrollieren, was passiert, eigentlich wird es sich natürlich so verhalten, als gäbe es keinen Zurück-Button, der Inhalt wird immer erneuert. Google verwendet dies auf Google Mail- und Orkut-Websites. – Havenard

+0

@Havenard: -> "immer dynamisch geladen" ist nicht genau richtig, Sie können die Seite mit vom Server generiertem Inhalt vorbelegen (degradieren, wenn kein JS- oder JS-Problem vorhanden ist), dann wenn der Status sich außerhalb dieses Anfangs geändert hat laden, ja alle Inhalte sind "ajax-ed" drin. aber du bist auf dem Geld (+1 Kommentar) – BigBlondeViking

0

Diese Lösung trifft möglicherweise auf Ihren Fall zu und funktioniert möglicherweise nicht mit Ihrem Browser. Es schien für mich auf IE7 zu funktionieren, wo jede Seite eine eindeutige "Widget-ID" hatte, auf die im Querystring verwiesen wurde -

//try to detect a bad back-button usage; 
//widgetId not match querystring parameter did=# 
var mustReload = false; 
if (location.search != null && 
    location.search.indexOf("&did=") > 0) 
{ 
    var urlWidgetId = location.search.substring(
     location.search.indexOf("&did=")+5); 
    if (urlWidgetId.indexOf("&") > 0) 
    { 
     urlWidgetId = urlWidgetId.substring(
      0,urlWidgetId.indexOf("&")); 
    } 
    if (currentDashboard != urlWidgetId) 
    { 
     mustReload = true; 
    } 
} 
if (mustReload) 
{ 
    ... //reload the page to resynch here 
} 
Verwandte Themen