Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Event w momencie najechania ekranem
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
markonix
Ciężko mi nazwać ten event jeżeli to jest w ogóle event ale chodzi mi o wykonanie akcji gdy użytkownik zobaczy (dosłownie) dany element.
Rozumiem przez to aktywną kartę i przewinięcie strony jeżeli dany element nie jest widoczny.

Coś w stylu FB gdzie po przewinięciu strony na dół tablica automatycznie się wydłuża.
Kiedyś podobnie widziałem wykorzystane to na stronie jQuery do wyświetlania komentarzy (domyślnie ukryte).
kamil4u
onscroll + warunek badający długość i pozycję paska przesuwania
mortus
W jQuery: .scroll(), .srollTop() lub ewentualnie plugin scrollTo().
markonix
Dziękuje, wystarczyło mi tylko naprowadzenie (metodę).
Troszkę poobserwować wartości i mamy algorytm.
Odległość od góry za pomocą offset().top oraz dodać do tego wysokość okna (inaczej trzeba by całą stronę przewinąć).

Kod, który spłodziłem:

  1. $(document).scroll(function() {
  2.  
  3. var height = $(window).height();
  4. var myTop = $("#tenElement").offset().top;
  5. var scrollTop = $(document).scrollTop() + height ;
  6.  
  7. if (scrollTop > myTop) {
  8. alert('bum');
  9. }
  10.  
  11. })


Zastnawiam się tylko czy jest też jakaś metoda, która pozwoli zareagować na przełączenie karty w przeglądarce - gdy użytkownik nie będzie musiał przewijać strony aby zobaczyć ten element (element dodawany dynamicznie więc onLoad nic nie da).
kamil4u
Cytat
Zastnawiam się tylko czy jest też jakaś metoda, która pozwoli zareagować na przełączenie karty w przeglądarce - gdy użytkownik nie będzie musiał przewijać strony aby zobaczyć ten element (element dodawany dynamicznie więc onLoad nic nie da).

Opisz dokładniej co ma się dziać przy przełączaniu kart, bo nie do końca rozumiem problem.
markonix
Za pomocą ajaxa pojawiają się kolejne wypowiedzi w konwersacji.
W momencie gdy pojawią się nowe wiadomości wyświetlany jest komunikat.
Komunikat chciałbym aby był wyświetlany 3 sekundy od momentu gdy użytkownik go zobaczy.
Może go zobaczyć na dwa sposoby:
- usłyszy dźwięk i przełączy kartę
- usłyszy dźwięk i przewinie stronę.
kamil4u
Kod
<!DOCTYPE html>
<html lang="pl">
    <head>
        <script>
            onfocus = function(){
                document.body.innerHTML += "test<br>";
            }
        </script>
    </head>
    <body>
    </body>
</html>


Nie dawaj alerta, bo skutki nie są zbyt ciekawe wink.gif
markonix
Faktycznie fajny trik,

teraz by należało połączyć obie metody bo jeżeli jest już na tej stronie to trzeba sprawdzić czy ma odpowiednią wysokość żeby zobaczyć komunikat, jeżeli nie to oczekiwać, że przewinie i to wychwycić.

Ogólnie dużo kodu dla pierdółki więc się jeszcze zastanowie czy w to brnąć w ogóle.
Ale lekcja ciekawa.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.