Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: mouse scroll
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
melior
Znalazłem kod do obsługi mouse scrolla. Trochę nie rozumiem na jakiej zasadzie działa wheelDelta event, a dokładniej jakie wartości przyjmuje, jaki ma zakres...
W tym momencie kod wyświetla na ekranie 1: up jeżeli użyję mouse scrolla w jedną stronę, lub -1: down jeżeli w drugą.
Jak zmodfikować kod by dowolnie zwiększyć ten zakres? np. od -n do +n Tak by delta przyjmowała wartości nie tylko 1/-1.

Dzięki za pomoc

Kod
<script type="text/javascript">

var delta = 0;

function handle(delta) {
    var s = delta + ": ";
    if (delta < 0)
        s += "down";
    else
        s += "up";
    document.getElementById('delta').innerHTML = s;
}

function wheel(event){    
    if (!event) event = window.event;
    if (event.wheelDelta) {
        delta = event.wheelDelta/120;
        if (window.opera) delta = -delta;
    } else if (event.detail) {
        delta = -event.detail/3;
    }
    if (delta)
        handle(delta);
}

/* Initialization code. */
if (window.addEventListener)
    window.addEventListener('DOMMouseScroll', wheel, false);
window.onmousewheel = document.onmousewheel = wheel;

</script>


EDIT:
Problem rozwiązany i aż mi głupio, że nie mogłem sobie z tym poradzić. Ale to wczesna pora i człowiek nie myśli jeszcze dobrze. Widząc cały czas 1 na ekranie, gdy kręciłem scrollem, jakoś nie dotarło do mnie, że delta jednak się zmienia za każdym razem od 0 do 1. Więc wystarczy dać s+=delta; Heh... Wiem, wiem, należy mnie wychłostać smile.gif
janek9
Cytat(melior @ 26.03.2010, 07:15:47 ) *
Znalazłem kod do obsługi mouse scrolla. Trochę nie rozumiem na jakiej zasadzie działa wheelDelta event, a dokładniej jakie wartości przyjmuje, jaki ma zakres...
W tym momencie kod wyświetla na ekranie 1: up jeżeli użyję mouse scrolla w jedną stronę, lub -1: down jeżeli w drugą.
Jak zmodfikować kod by dowolnie zwiększyć ten zakres? np. od -n do +n Tak by delta przyjmowała wartości nie tylko 1/-1.

Dzięki za pomoc

Kod
<script type="text/javascript">

var delta = 0;

function handle(delta) {
    var s = delta + ": ";
    if (delta < 0)
        s += "down";
    else
        s += "up";
    document.getElementById('delta').innerHTML = s;
}

function wheel(event){    
    if (!event) event = window.event;
    if (event.wheelDelta) {
        delta = event.wheelDelta/120;
        if (window.opera) delta = -delta;
    } else if (event.detail) {
        delta = -event.detail/3;
    }
    if (delta)
        handle(delta);
}

/* Initialization code. */
if (window.addEventListener)
    window.addEventListener('DOMMouseScroll', wheel, false);
window.onmousewheel = document.onmousewheel = wheel;

</script>


EDIT:
Problem rozwiązany i aż mi głupio, że nie mogłem sobie z tym poradzić. Ale to wczesna pora i człowiek nie myśli jeszcze dobrze. Widząc cały czas 1 na ekranie, gdy kręciłem scrollem, jakoś nie dotarło do mnie, że delta jednak się zmienia za każdym razem od 0 do 1. Więc wystarczy dać s+=delta; Heh... Wiem, wiem, należy mnie wychłostać smile.gif



Pozwolę sobie na odświeżenie tematu. Używam dokładnie tego samego kodu. Niestety przewijanie nie działa i mogę przewinąć albo raz do góry lub na dół. Posiedziałem trochę i nic nie wymyśliłem, w którym miejscu mógłbym dodać s+=delta.. Czy jest ktoś w stanie mi pomóc lub nakierować ?
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.