2 Stimmen

PHP/JS: Wie implementiert man dynamische Breadcrumbs (kompatibel mit mehreren Fenstern/Tabs)?

Ich arbeite an einer Website, für die wir eine "dynamische" Breadcrumb-Erstellung benötigen.

Die Seiten innerhalb dieser Anwendung sind keine spezifischen Unterseiten der anderen, so dass ich, wenn der Benutzer eine von ihnen durchsucht, nicht einfach die Schritte nach oben zurückverfolgen kann.

I could have the following breadcrumbs-like lists: (updated)
* inbox > message > user profile
* search results > user profile
* search results > user profile > new message

(Zu Ihrer Information: Es wird ein paar spezielle Elternseiten geben, die den gesamten Stapel zurücksetzen werden. Außerdem wird es eine Prüfung geben, die eine Rekursion verhindert. )

Um dies zu erreichen, muss ich mich daran erinnern, wo der Benutzer gewesen ist und in welcher Reihenfolge. Ich denke, der eleganteste und zuverlässigste Weg ist, einen Mechanismus zu schreiben, der den Verlauf des Benutzers in der Sitzung speichert.

Wenn ich das tue, bricht die ganze Sache jedoch ab, wenn ein Benutzer ein neues Browserfenster oder eine neue Registerkarte öffnet.

Um das zu beheben, könnte ich diese Daten im Querystring speichern. Allerdings haben verschiedene Browser/Proxies unterschiedliche Grenzen für die Daten, die auf diese Weise übertragen werden können. Eines Tages wird also auch dies wahrscheinlich nicht mehr funktionieren.

Hat jemand eine Idee, wie man das umsetzen kann?

Oder;

Weiß jemand, wie man verschiedene Windows-Browser zuverlässig identifizieren kann?

(Ich würde lieber nicht auf Javascript für diese verlassen, es sei denn, es ist meine einzige praktikable Option. Ich verwende Dojo Toolkit für das Frontend)

vielen Dank im Voraus!

3voto

Pentium10 Punkte 198024

Bei HTML5-kompatiblen Browsern würde ich diese auf dem lokalen Speicher ablegen.

Sie können feststellen, dass eine neue Registerkarte wie folgt geöffnet wird:

  • beim Laden der Seite ein Cookie per Javascript setzen
  • verwenden Sie die onbeforeunload Ereignis, um das Cookie zu löschen

Wenn der Besucher Ihre Website öffnet, wird ein Cookie gesetzt, z.B. session=1 Wenn sie auf einen neuen Link auf Ihrer Website klicken, wird das Cookie beim Verlassen der Website z. B. session=0 aber sobald sie wieder auf Ihrer Website ankommen, wird es session=1 . Wenn der Besucher eine neue Registerkarte öffnet, wird er auf eine session=1 Das werden wir also wahrscheinlich tun. session=2 . Haben Sie das verstanden?

2voto

bobince Punkte 512550

window.name das Laden eines neuen Dokuments überlebt. Sie können also einen Verlaufsstring in window.name und lesen ihn dann von der nächsten Seite zurück, oder verwenden Sie einen generierten Namen als Schlüssel für die Speicherung fensterspezifischer Cookies/Sitzungen.

Ich halte das allerdings für keine gute Idee. "Brotkrümel" sind traditionell ein hierarchisches Navigationsinstrument, keine Verlaufsliste. Der Browser bietet mit den Schaltflächen "Zurück/Vorwärts" bereits eine sehr gute Verlaufsliste, die auf der Seite nicht sinnvoll wiedergegeben werden sollte. Die Darstellung einer Verlaufsliste auf der Seite, insbesondere in einem Format, das normalerweise eine hierarchische Platzmarkierung darstellt, wird die Nutzer eher verwirren als ihnen helfen.

1voto

Pekka Punkte 429407

Ich fragte eine ähnliche Frage vor ein paar Monaten. In der ersten Antwort - die ich auch befolgen werde - wurde vorgeschlagen, einen Pfad zu erstellen und diesen mit einer Kombination aus mod_rewrite und PHP zu analysieren:

www.mysite.com/inbox/message/user_profile/12345/new_message

Bis zu einem gewissen Punkt (die Anfrage-URL sollte nie größer als 1024 Bytes sein) kann das eine recht gute Lösung sein. Ein zusätzlicher Vorteil ist, dass der Breadcrumb-Pfad sogar Sitzungen überdauern kann und in Links funktioniert, die an andere weitergeleitet werden (falls dies in Ihrem Szenario wünschenswert ist).

Und noch etwas: Wenn ich mir Ihre Beispiele ansehe, sehe ich nicht wirklich die Notwendigkeit, den Verlauf zurückzusetzen, wenn der Benutzer eine neue Seite öffnet, oder verschiedene Browser-Windows überhaupt zu berücksichtigen. Es gibt eine logische Hierarchie (kein Verlauf), und warum sollte das System die Hierarchie ändern, nur weil ich den neuen Nachrichteneditor in einer neuen Registerkarte öffnen möchte?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X