Ja, so einen Knoten im Kopf und Brett vorm Kopf, dass mir noch nicht mal ein Titel einfällt. Ich versuche mal zu erklären was ich vorhabe, was ich habe und was ich möchte, bzw. wo ich hänge.
Im Prinzip geht es um einen Counter, der die Ansicht von Unterkünften in der Unterkunftsliste zählen soll. Das aber nicht so pauschal, alle 20 wurden angezeigt, sondern welche auch wirklich sichtbar waren, also in Abhängigkeit vom Viewport.
Grundvoraussetzung ist also schon mal ein Listener auf Scroll und Resize.
Das an sich habe ich schon, also ich weiß, welches DIV vollständig im Viewport ist. Das soll nun aber nicht einfach so gewertet werden, sondern in Abhängigkeit der Dauer, wie lange es im Viewport war bzw. eben einen Mindestwert von z.B. 3 Sekunden.
Und hier beginnt nun der Knoten, eigentlich genau bei der Dauer.
Bisher wird immer validiert, wenn man scrollt oder der Viewport sich ändert. Das ist aber ein schlechter Ansatz, denn man scrollt ja nicht immer. Dennoch wird es benötigt, um überhaupt zu erkennen, ob ein DIV drinnen ist.
Also kam die Idee das zusätzlich mit einem setInterval zu machen, der z.B. alle 250ms selbst validiert und eben einen Zähler dann um 250ms erhöht, wenn das DIV drinnen war. Rein gedanklich hört sich das nicht schlecht an, aber auch hier hänge ich irgendwie.
Mir scheint, als ob das mit dem Listener dann irgendwie kollidiert bzw. doppelt gemoppelt ist. Hatte es auch schon mit einem Timestamp versucht, aber das geht gar nicht, denn das DIV kann ja kurz drinnen gewesen sein, dann 2 Minuten draussen und dann wieder kurz drinnen und wieder draussen, etwa wenn man schnell hoch und runter scrollt. Also Timestamp geht definitiv nicht. Daher der Ansatz mit dem Timer, der bei 0 beginnt und bei 3000ms enden soll.
Kann einer meinen Knoten etwas entwirren?
Danke und Gruß,
Ingo