Frankbert: Feststellen, ob Element gesehen wurde

Hallo,

ich wüsste gerne, ob beim Betrachten meiner Seite bis zu einem bestimmten Element darauf hinuntergescrollt wurde.

Meine Idee ist folgende:
1. Feststellen, ob die obere linke Ecke dieses Elements x Pixel über dem unteren Browserrahmen steht.
2. In diesem Fall per Javascript ein Bild nachladen.
3. Anhand der Providerstatistik kann ich dann sehen, wie oft das Element gesehen wurde.

Zum Position herausfinden habe ich das hier gefunden:
http://javascript.jstruebig.de/javascript/53/

Muss ich die Überprüfungsfunktion dann immer wieder (per setTimeout) aufrufen, oder geht das auch mit einem Eventhandler?

Gibt es einen einfacheren Weg Informationen über die Betrachtungshäufigkeit eines Elements zu bekommen?

Vielen Dank schon mal für alle Antworten!
Frank

  1. Hallo Frankbert,

    Muss ich die Überprüfungsfunktion dann immer wieder (per setTimeout) aufrufen, oder geht das auch mit einem Eventhandler?

    Gibt es einen einfacheren Weg Informationen über die Betrachtungshäufigkeit eines Elements zu bekommen?

    Ja, da wäre der Eventhandler "onscroll" in Betracht zu ziehen, der allerdings bei älteren Mozilla- und Firefoxversionen sowie Netscape 6/7 den Nachteil hat, dass er über ein scrollen mit dem Mausrad nicht ausgelöst wird.

    Wenn du diese Browser auch erwischen willst, bleibt dir eine sich über window.setTimeout immer wieder selbst aufrufende Funktion oder ein window.setInterval nicht erspart.

    Gruß Gernot

    1. Hi,

      Ja, da wäre der Eventhandler "onscroll" in Betracht zu ziehen, der allerdings bei älteren Mozilla- und Firefoxversionen sowie Netscape 6/7 den Nachteil hat, dass er über ein scrollen mit dem Mausrad nicht ausgelöst wird.

      und den, im IE ständig während des Scrollens zu feuern, während anderswo brav auf den Abschluss des Ereignisses gewartet wird.

      Cheatah

      --
      X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
      X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
      X-Will-Answer-Email: No
      X-Please-Search-Archive-First: Absolutely Yes
      1. Hallo Cheatah,

        und den, im IE ständig während des Scrollens zu feuern, während anderswo brav auf den Abschluss des Ereignisses gewartet wird.

        Der war mir in aller Klarheit noch nicht bewusst, obwohl ich schon so etwas vermutet habe, dass im IE "onscroll" mehrfach ausgeführt wird, während man den Schieberegler des Scrollbalkens noch "angefasst" hat.

        Das ist doch aber -selbst im IE- immer noch besser, als permanent ein  Interval oder Timeout laufen zu haben, oder?

        Gruß Gernot

        1. Danke euch!

          Das onscroll funktioniert bei mir im Fx 1.5, IE6 und Op9.
          Die Frequenz der Aufrufe scheint dabei etwas unterschiedlich zu sein (IE sehr häufig, Fx und Op etwas moderater).

          Auf jeden Fall lässt sich damit meine Aufgabe erfüllen, und besser als mit dem timeout, da so wirklich nur gearbeitet wird, wenn es nötig ist.

          Wenn es euch interessiert, kann ich das script posten, wenn ich es fertig habe.

          liebe Grüße,
          Frank

      2. Hi Cheatah,

        [...] den Nachteil hat, dass er über ein scrollen mit dem Mausrad nicht ausgelöst wird.
        und den, im IE ständig während des Scrollens zu feuern, während anderswo brav auf den Abschluss des Ereignisses gewartet wird.

        das sehe ich nicht als Nachteil - im Gegenteil, es ist konsequent: Genau wie onmousemove, der ja auch während der Bewegeung der Maus permanent feuert, erwarte ich auch vom onscroll, dass er sich andauernd während des Scrollens meldet. Genau wie bei der Bewegung der Maus ist ja auch das Scrollen ein Ereignis, das nicht auf einen Zeit_punkt_ bestimmt werden kann wie z.B. onload, sondern auf einen Zeit_bereich_. Es wird also kein Zustandswechsel signalisiert, sondern ein Vorgang, der länger andauern kann.

        So long,
         Martin

        --
        Wer im Glashaus sitzt, sollte Spaß am Fensterputzen haben.