Désactiver tout le défilement sur la page Web

J’aimerais savoir s’il est possible de désactiver tout défilement sur une page Web.

J’utilise actuellement

html, body { overflow:hidden; } 

Le problème est que cela ne fonctionne pas sur les appareils iOS. Si vous maintenez la molette de la souris enfoncée et que vous la faites glisser vers le bas, vous pouvez également faire défiler l’écran, ce qui semble être une très mauvaise solution au problème.

Existe-t-il un moyen de désactiver toutes les méthodes de défilement sur tous les appareils, puis de le réactiver?

J’ai eu exactement ce même problème, je l’ai corrigé avec ce qui suit;

 var disableScroll = false; var scrollPos = 0; function stopScroll() { disableScroll = true; scrollPos = $(window).scrollTop(); } function enableScroll() { disableScroll = false; } $(function(){ $(window).bind('scroll', function(){ if(disableScroll) $(window).scrollTop(scrollPos); }); $(window).bind('touchmove', function(){ $(window).sortinggger('scroll'); }); }); 

le déplacement tactile est lié à la fenêtre, car l’événement de défilement de la fenêtre n’est déclenché que lorsque le déplacement tactile est terminé. Cela permet donc une expérience beaucoup plus fluide sur iOS!

Ce n’est pas une solution parfaite car vous pouvez «lancer» la page, mais elle reviendra à la position souhaitée une fois le lancement terminé (l’événement de défilement de la fenêtre étant alors déclenché). En effet, les navigateurs iOS suppriment de nombreux événements pour améliorer les performances. De plus, les fonctions setTimeout et setInterval ne se déclenchent pas pendant le lancement de la page. Avoir une boucle n’est pas une option non plus!

voir ici http://jsfiddle.net/8T26k/