29 votes

L'iPad ne déclenche pas l'événement de redimensionnement allant de la verticale à l'horizontale?

Quelqu'un a-t-il remarqué ce comportement? J'essaie d'écrire un script qui se déclenchera lors d'un redimensionnement. Cela fonctionne bien sur les navigateurs normaux, fonctionne très bien sur iPhone, mais sur iPad, ne déclenchera que le passage de la fenêtre horizontale à la fenêtre verticale, et non l'inverse.

Voici le code:

 $(window).resize( function() {

    var agent=navigator.userAgent.toLowerCase();
    var is_iphone = ((agent.indexOf('iphone') != -1));
    var is_ipad = ((agent.indexOf('ipad') != -1));

    if(is_iphone || is_ipad){
        location.reload(true);
    } else {     
        /* Do stuff. */
    };
});
 

41voto

Vincent Points 2354

Si je vous ai bien compris, vous voulez faire quelque chose lorsque l'utilisateur incline l'iPad. Voici:

 window.onorientationchange = function(){

    var orientation = window.orientation;

    // Look at the value of window.orientation:

    if (orientation === 0){

        // iPad is in Portrait mode.

    }

    else if (orientation === 90){

        // iPad is in Landscape mode. The screen is turned to the left.

    }


    else if (orientation === -90){

        // iPad is in Landscape mode. The screen is turned to the right.

    }

}
 

L'image de gauche montre le mode portrait, celui de droite le mode paysage

12voto

artlung Points 13433

Je pense que ce que vous voulez serait d'utiliser le CSS d'orientation iPad , qui ressemble à ceci:

 <link rel="stylesheet" media="all and (orientation:portrait)" href="portrait.css" />
<link rel="stylesheet" media="all and (orientation:landscape)" href="landscape.css" />
 

De plus, l'événement orientationchange déclenche lorsque l'orientation est modifiée, selon les conseils de développement Web de l'iPad .

Ensemble, cela devrait vous donner suffisamment d'outils pour faire face au changement.

4voto

user1149756 Points 31

Cela inclut toutes les orientations.

Voici deux options:

 window.onorientationchange = function() {

    var orientation = window.orientation;

    // Look at the value of window.orientation:

    if (orientation === 0) {
    // iPad is in Portrait mode.

    } else if (orientation === 90) {
     // iPad is in Landscape mode. The screen is turned to the left.

    } else if (orientation === -90) {
     // iPad is in Landscape mode. The screen is turned to the right.

    } else if (orientation === 180) {
    // Upside down portrait.

    }
}    
 

ou

 // Checks to see if the platform is strictly equal to iPad:
    if(navigator.platform === 'iPad') {
            window.onorientationchange = function() {

            var orientation = window.orientation;

            // Look at the value of window.orientation:

            if (orientation === 0) {
            // iPad is in Portrait mode.

            } else if (orientation === 90) {
             // iPad is in Landscape mode. The screen is turned to the left.

            } else if (orientation === -90) {
             // iPad is in Landscape mode. The screen is turned to the right.

            } else if (orientation === 180) {
            // Upside down portrait.

            }
          }       
        }
 

1voto

user2333363 Points 22

L'iPad ne déclenche pas l'événement de redimensionnement allant de la verticale à l'horizontale dans le navigateur Safari de l'ipad. Son fonctionne bien dans le navigateur Chrome mais pas dans le navigateur Safari. Safari n'est-il pas pris en charge le redimensionnement?

0voto

Nick Craver Points 313913

La seule chose que j'ai pu trouver auprès d'apple:

Safari sur l'iPad et Safari sur iPhone n'ont pas de redimensionner les fenêtres. Dans Safari sur l'iPhone et l'iPad, la taille de la fenêtre est définie à la taille de l'écran (moins de Safari contrôles de l'interface utilisateur), et ne peut pas être modifié par l'utilisateur. Pour déplacer une page web, l'utilisateur modifie le niveau de zoom et la position de la fenêtre d'affichage comme ils le double tap ou pincer pour zoomer en avant ou en arrière, ou en touchant et en faisant glisser pour déplacer la page. Comme un utilisateur modifie le niveau de zoom et la position de la fenêtre d'affichage qu'ils le font à l'intérieur d'un contenu visible de la zone de taille fixe (c'est la fenêtre). Cela signifie que la page web des éléments qui ont leur position "fixe" à la fenêtre d'affichage peuvent se retrouver en dehors de la partie visible de la zone de contenu, les limites de l'écran.

Je comprends le "fonctionne sur l'iPhone" de la partie...mais peut-être qu'il n'a pas plus? Cela pourrait être un changement de système d'exploitation/navigateur Safari mobile depuis la dernière iPhone OS version livrée (la documentation ci-dessus est à partir de Mars 2010).

Je vais re-tag cette question en ajoutant iPhone, peut-être l'un des gars avec le développeur 4.0 OS version pouvez le tester? Si c'est le cas, il a été supprimé, ce doit être un bug déposée/fixe avant, il va vivre...je ne suis pas certaine de la façon dont les procédures sont sur ce avec Apple sont bien.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X