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 № 1Jeś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>