Comment faire pour désactiver la bande de caoutchouc dans iOS web apps?

Ce:

$('body').on('touchmove', function(e) { e.preventDefault(); });

Fonctionne, mais va désactiver le défilement à travers l'ensemble de la page, ce qui est loin d'être idéale.

Ce:

$('*').on('touchstart', function(e){
    var element = $(this).get(0);

    if ( element.scrollTop <= 0 )                                           element.scrollTop = 1;
    if ( element.scrollTop + element.offsetHeight >= element.scrollHeight ) element.scrollTop = element.scrollHeight - element.offsetHeight - 1;
});

Fonctionne sur les pages qui ont une zone de défilement. Cependant, quand il n'y a rien à faire défiler il montrera à nouveau la bande de caoutchouc.

Donc ma question:

Comment pouvez-vous désactiver la bande de caoutchouc en effet et toujours conserver la -webkit-overflow-scrolling zones de défilement?

[Mise à jour]

Meilleure Solution

Désactiver le défilement sur tous les non-défilement des éléments tels qu'une barre d'onglet ou une barre de navigation.

anElement.addEventListener('touchmove', function( event ){ event.preventDefault() };

Attacher un gestionnaire de défilement pour le défilement des éléments comme le contenu principal.

anElement.addEventListener('touchstart', function( event ){
        if( this.scrollTop === 0 ) {
            this.scrollTop += 1;
        } else if( this.scrollTop + this.offsetHeight >= this.scrollHeight ) {
            this.scrollTop -= 1;
        }
}
  • J'ai exactement la même question!
  • Je suis également à la recherche d'une réponse. Sur le bureau Safari elle aide à fixer les body {overflow:hidden; height: 100%;}mais qui ne fonctionne pas sur iOS.
  • Juste par curiosité, pourquoi voudriez-vous pour le désactiver?
  • Pour la simple raison qu'il se sent plus comme une application native.
InformationsquelleAutor Mark | 2012-04-27