Projektuję bardzo prostą stronę WWW (tylko HTML), jedyną "cechą", którą chcę zaimplementować, jest zrobienie czegoś, gdy użytkownik przewinie stronę, czy istnieje sposób na uchwycenie tego "zdarzenia" w jakiś sposób?Przechwytywanie zdarzenia "przewiń w dół"?
Odpowiedz
Tylko dla kompletności, istnieje inne rozwiązanie używając innej ramy JS (MooTools)
window.addEvent('scroll',function(e) {
//do stuff
});
Nie możesz tego zrobić za pomocą samego HTML, musisz użyć Javascript. Polecam używanie jQuery, dzięki czemu rozwiązanie może wyglądać następująco:
$(document).ready(function() {
$(window).scroll(function() {
// do whatever you need here.
});
});
Jeśli nie chcą lub nie są w stanie korzystać z jQuery można użyć roztworu onscroll
zamieszczonych przez Antoniego.
Chyba szuka tylko przewijania w dół, nie przewija w górę. czy jest tam tylko coś do przewijania w dół. –
Jeśli nie chcesz używać jQuery (która nie może zrobić dla bardzo prostej strony HTML), można tego dokonać przy użyciu zwykłego Javascript:
<script>
function scrollFunction() {
// do your stuff here;
}
window.onscroll = scrollFunction;
</script>
Wspomniałeś, że chcesz coś zrobić po przewinięciu strony - zdarzenie onscroll wyłącza się przewijając w dowolnym kierunku, na osi X lub Y, aby Twoja funkcja była wywoływana przy każdym przewijaniu.
Jeśli naprawdę chcesz, aby uruchamiał kod tylko podczas przewijania strony, musisz zachować poprzednią pozycję przewijania, aby porównać z każdym wywołaniem funkcji onscroll.
Powinien używać 'attachEvent' (IE) i' addEventListener' (wszystko inne) prawdopodobnie zamiast 'onscroll'. – crush
@crush, Dlaczego warto używać attachEvent i addEventListener zamiast onscroll? – Pacerier
@Pacerier Okay, pozwól mi wrócić do tego komentarza, ponieważ jest on wprowadzający w błąd i opiera się na błędnych informacjach, które zdobyłem i które są propagowane w Internecie. Zgodnie ze specyfikacją [W3C HTML5] (http://www.w3.org/TR/html5/webappapis.html#event-handlers-on-elements--document-objects--and-window-objects) istnieje nic złego w używaniu 'onscroll'. Należy pamiętać, że 'onscroll' w szczególności nie istniał w [specyfikacji HTML4] (http://www.w3.org/TR/html4/interact/scripts.html#h-18.2.3). – crush
Lepszym sposobem jest nie tylko sprawdzić zdarzeń przewijania, ale także dla kierunku przewijania jak poniżej;
$(window).bind('mousewheel', function(event) {
if (event.originalEvent.wheelDelta >= 0) {
console.log('Scroll up');
}
else {
console.log('Scroll down');
}
});
To powinna być poprawna odpowiedź. –
Co zrobić, jeśli nie używasz kółka myszy do przewijania lub używasz urządzenia dotykowego? – HyderA
@hydeA różne urządzenia reagują inaczej. Do tego może być konieczne użycie wtyczki takiej jak hammerjs lub coś podobnego. W przeciwnym razie myślę, że to odpowiedź została tutaj http://stackoverflow.com/questions/2863547/javascript-scroll-event-for-iphone-ipad –
To działa dla mnie.
var previousPosition
$(window).scroll(function(){
var currentScrollPosition=$(window).scrollTop() + $(window).height()
if (currentScrollPosition>previousScrollPosition) {
console.log('down')
}else if(currentScrollPosition<previousScrollPosition){
console.log('up')
}
previousScrollPosition=currentScrollPosition
});
- 1. Selen - przewiń w dół rosnącą stronę
- 2. Android WebBrowser przewiń w dół strona
- 3. Zdarzenia niestandardowe bańki w dół
- 4. Ogórek Kapibara przewiń na dół strony
- 5. Przechwytywanie zdarzenia wyjścia aplikacji - WinForms
- 6. Fade w elemencie na Przewiń w dół za pomocą CSS
- 7. Przewiń w dół strony automatycznie, dopóki użytkownik przewija w górę
- 8. Przechwytywanie zdarzenia anulowania na typie wejściowym = plik
- 9. .NET Windows Forms - przechwytywanie zdarzenia Close X
- 10. Przechwytywanie zdarzenia rozłączenia klienta! - Gevent/Python
- 11. Przewiń do dołu C# TextBox
- 12. Przewiń za pomocą klawiatury?
- 13. Przechwytywanie zdarzenia kliknięcia prawym przyciskiem myszy kontrolki przeglądarki internetowej
- 14. Przechwytywanie danych wyjściowych procesu za pomocą zdarzenia OutputDataReceived
- 15. html/css że Przewiń w dół do różnych sekcji div na stronie internetowej
- 16. DataGridView: Przewiń w dół automatycznie tylko, jeśli przewijanie znajduje się na dole
- 17. Przewiń wydarzenie w AngularJS
- 18. jQuery przewiń do dołu strony
- 19. numeryczna kontrola w dół w vba
- 20. Przewiń listę z wtyczką slimscroll
- 21. Dodaj do NSTextView i przewiń
- 22. resetuj TextView przewiń do góry
- 23. Użytkownik mobilny JQuery przewiń do dołu
- 24. Przechwytywanie czas w milisekundach
- 25. Przechwytywanie wiadomości w pisku
- 26. Przechwytywanie pakietów w RDMA?
- 27. Przewiń poziomo w Xamarin.Forms ScrollView
- 28. Szybkie przechwytywanie stosu wywołań
- 29. Przewiń do końca FlatList po wyświetleniu klawiatury
- 30. Java - Przechwytywanie System.out.println lub Przechwytywanie PrintStream
nie używając 'window.addEventListener (" scroll ", function (e) {...});'? Z powodu dodatkowych 8 liter? –
Bo w ten sposób (mootools 'way) wspierasz (ed) także IE <9 (attachEvent stuff) ... – stecb
Więc to modyfikuje 'prototyp' okna '? –