2009-09-02 4 views
1

Wenn Sie einen langen Thread in Google Mail anzeigen, wird am unteren Rand des Bildschirms ein div mit dem Namen des Autors der nächsten Nachricht angezeigt. Wenn Sie mehr Nachrichten scrollen und anzeigen, wird dieses div immer mit dem Namen des Autors der Nachricht aktualisiert, der sich nach der angezeigten Nachricht befindet.Javascript, um zu bestimmen, wo sich der Benutzer auf der Seite befindet

Wie denken Sie, dass diese Funktion implementiert ist?

Ich habe eine lange Seite mit Protokollinformationen und möchte den Benutzer daran erinnern, wo sie sich auf der Seite befinden. Ich habe versucht, das Gmail-Javascript zu betrachten, aber der Code ist zu verschleiert, um zu folgen.

Antwort

1

Sie müssen den aktuellen Scroll-Offset abrufen. Das bestimmt, wie weit der Benutzer auf der Seite ist.

Sie müssen wissen, welches Element an diesem Offset ist. Die Position von Elementen wird anhand ihres Versatzes jedes übergeordneten Elements berechnet.

Normalerweise verfügen eine Bibliothek wie JQuery, MooTools, YUI usw. über vorhandene Methoden zum Abrufen von Bildlaufpositionen und Elementpositionen.

1

Mit jQuery können Sie die Höhe von allem ermitteln und dann basierend auf der aktuellen Bildlaufposition auf diese Weise berechnen.

Alternativ könnten Sie es so machen, dass sie auf das Ding klicken müssen, das sie betrachten, und dann tun Sie es über onfocus.

+1

Sie können die Methode position() auch in jQuery verwenden, sodass Sie die Höhe der vorhergehenden Elemente nicht addieren müssen. Für die Liste aller Positionierungsmethoden: http://docs.jquery.com/CSS –