/ / Jak zapobiec przewijaniu w javascript? - javascript

Jak zapobiec przewijaniu w javascript? - javascript

ok ... Mogę być leniwy do wyszukiwania, ale to trochę denerwujące, że wszystko, co mogę znaleźć, to

„jak ustawić zdarzenie przewijania w dół”, gdy szukałem „jak zapobiec przewijaniu w dół”.

w kodzie javascript ustawiam zdarzenie dla klawisza strzałki w dół. Kiedy naciskam strzałkę w dół

z poziomu przeglądarki przeglądarka nie tylko ustawia zdarzenie, które ustawiłem, ale także je wykonuje

przewijanie strony, która nie jest moim zamierzeniem. Oto moje pytanie.

Jak mogę wyłączyć funkcję przewijania w dół, która pojawia się po naciśnięciu strzałki w dół?

każda pomoc zostanie doceniona.

Odpowiedzi:

3 dla odpowiedzi № 1

Jeśli chcesz zapobiec pionowemu paskowi przewijania i jakiejkolwiek akcji przewijania w pionie przez użytkownika, możesz użyć tego javascript:

document.body.style.overflowY = "hidden";​

Lub można to również ustawić za pomocą reguły CSS:

body {overflow-y: hidden;}

Z drugiej strony, jeśli to, co próbujesz zrobić, to uniemożliwić domyślnemu modułowi obsługi klawiszy strzałki w dół wykonywanie jakichkolwiek czynności po przetworzeniu tablicy w dół, musisz wywołać e.preventDefault() lubię to:

function myKeyDownHandler(e) {
// your code here
e = e || window.event;
if (e.preventDefault) {
e.preventDefault();
} else {
e.returnValue = false;   // older versions of IE (yuck)
}
return false;
}

Bardziej czystym sposobem, jeśli musisz to zrobić w więcej niż jednym miejscu, byłoby utworzenie własnej funkcji w różnych przeglądarkach:

function preventDefault(e) {
e = e || window.event;
if (e.preventDefault) {
e.preventDefault();
} else {
e.returnValue = false;   // older versions of IE (yuck)
}
}

function myKeyDownHandler(e) {
// your code here
preventDefault(e);
return false;
}

Jest to jeden z tych doskonałych przykładów, w których środowisko dla różnych przeglądarek (jQuery / YUI / etc) oszczędza Twój czas, ponieważ już wykonałeś całą tę pracę dla różnych przeglądarek.

Oto jest interesujący artykuł na preventDefault i stopPropagation().


1 dla odpowiedzi nr 2

Oto przykładowa strona, która nie pozwala na używanie klawiszy strzałek do przewijania:

<script>
document.onkeydown = function(evt) {
evt = evt || window.event;
var keyCode = evt.keyCode;
if (keyCode >= 37 && keyCode <= 40) {
return false;
}
};
</script>
<body style="height:3000px;">

</body>