Il est pas si facile: je jouais autour de lui beaucoup trop :)
D'abord, vous avez sans doute remarqué que certains appareils Android (par exemple Samsung Galaxy Tab) sera détecté comme portrait alors qu'ils sont le paysage et vice-versa. Donc d'abord vous devez construire des fonctions pour détecter l'orientation basée sur screen.width et screen.height si ipad n'est pas détecté (l'ipad montrera toujours l'orientation correctement .. Je ne suis pas amusant de toute façon).
Ensuite, vous devez déclencher la fonction de rappel après un certain temps que le changement d'orientation est détecté avec un délai d'attente pour laisser l'environnement entier changer en conséquence à la nouvelle orientation.
Voici donc comment je fais .. heureux de le partager :)
function orientation_changed()
{
if (is_portrait())
{
//do something
}
else if (is_landscape())
{
// do something else
}
clearTimeout(window.t);
delete window.t;
}
window.t = undefined;
window.onorientationchange = function (event)
{
window.t = setTimeout('orientation_changed();', 250);
}
function is_landscape()
{
var uagent = navigator.userAgent.toLowerCase();
if (uagent.search('ipad') > -1)
{
var r = (window.orientation == 90 || window.orientation == -90);
}
else
{
var r = (screen.width > screen.height);
}
return r;
}
function is_portrait()
{
var uagent = navigator.userAgent.toLowerCase();
if (uagent.search('ipad') > -1)
{
var r = (window.orientation == 0 || window.orientation == 180);
}
else
{
var r = (screen.width < screen.height);
}
return r;
}
Si le nom de l'événement est 'orientationChange', pourquoi avez-vous' orientationChanged' dans votre code? – lonesomeday
En réalité, toutes les lettres dans le nom de l'événement doivent être minuscules – Dan
@Dan ce n'est pas vrai: camelCase est toujours autorisé à avoir un code plus lisible par les humains –