Taille de texte par Defaut
Agrandir la Taille du Texte
Réduire la Taille du Texte
Options d'accessibilité
Informatique

iPad iOS7 Safari landscape height Bug-fix

laurent
1 février 2016
2 Commentaires

Si vous avez déjà tenté de développer une interface web prenant la taille exacte de l’écran, vous avez certainement du croiser ce bug de Safari dans l’iPad sous iOS7.

Description du bug sur iPad

Le bug intervient dans Safari sous iOS7 et seulement en orientation « landscape » (paysage).

« Il est écrit dans les tablettes de Skeloss que seul un Gnome des Forêts du Nord unijambiste dansant à la pleine lune au milieu des douze statuettes enroulées dans du jambon ouvrira la porte de Zaral Bak et permettra l’accomplissement de la prophétie. »

Quand ces conditions sont réunies, un conteneur global qui aura une height à 100% dépassera la hauteur réelle de l’écran de 20px activant ainsi un scroll de 20px sur l’interface.

Voici une page pour faire le test : http://krpano.com/ios/bugs/ios7-ipad-landscape/

iOS7 iPad landscape test portrait   iOS7 iPad landscape test landscape

On voit bien qu’en orientation « landscape » le bord du bas dépasse de l’écran.

Bug fix

Le bug fix que nous utilisons se décompose en deux parties.

La première partie est le Js qui va détecter les conditions qui créent le bug (IOS7). Il va alors ajouter une classe sur le body pour qu’on puisse gérer le tout avec du CSS et va également calculer la hauteur réelle disponible et la fixer en dur :

if (navigator.userAgent.match(/iPad;.*CPU.*OS 7_\d/i)){
	document.body.classList.add('ipadLandscapeBugFixe');
	document.body.style.height = window.innerHeight + 'px !important';
}

Ensuite vient le CSS qui va refixer le body bien comme il faut :

@media (orientation:landscape) {
	.ipadLandscapeBugFixe {
		position: fixed;
		bottom: 0;
		width: 100%;
	}
}

Et voilà !

Commentaires 2
  • Sam
    04/02/2016 09:24

    à ce niveau là, c’est quasiment de la magie noire !

  • laurent (Auteur)
    04/02/2016 15:26

    *magie blanche

    Nous sommes les dignes héritiers de Gandalf ! C’est Apple Saruman !

Répondre à laurent Annuler la réponse

Votre adresse e-mail ne sera pas publiée.