Safari iPhone - Comment détecter le niveau de zoom et le décalage?
Je à la recherche pour les options sur la façon de suivre l'utilisateur zoom et panoramique sur une page lors de l'affichage dans Safari sur un iPhone. Safari expose les déplacer et les événements de mouvement, donc théoriquement je peux garder un suivi de panoramique et de zoom, mais qui semble exagéré puisque le navigateur doit suivre en interne.
Cette information est-elle exposée à travers le Modèle d'Objet de Document?
source d'informationauteur Jason Kester
Vous devez vous connecter pour publier un commentaire.
Lorsque vous effectuez un zoom avant,
window.innerWidth
est ajusté, maisdocument.documentElement.clientWidth
n'est donc pas:(J'ai testé la version iOS4, sans
viewport
<meta>
).Cependant, je ne voudrais pas compter sur elle pour quelque chose d'important. DOM fenêtre d'affichage des tailles/tailles de pixel dans les navigateurs mobiles sont un désordre complet.
Selon la Safari De Contenu Web Guidezoom événements (double tap) ne sont pas exposées, donc je ne suis pas sûr de savoir comment vous pouvez suivre cette.
Je ne crois pas que cette information est exposée par le DOM.
Sur le navigateur Safari Mobile et Android, ici, c'est un moyen précis de mesurer combien la page a été agrandi.
Essayer ici: http://jsbin.com/cobucu/3 - changement de zoom, puis cliquez sur mesurer.
Technique est d'ajouter un haut niveau de div:
et utiliser le calcul:
Le seul problème est de trouver un bon moyen de détecter que l'utilisateur a changé de zoom (pincement, double tap, etc). Options:
double-tapez: laid et peut-être difficile de faire 100% fiable
PS: Windows Phone a besoin d'une autre solution (pinch-zoom ne change pas la fenêtre d'affichage - zoom par pincement sur Windows a son propre séparé, fenêtre qui n'est pas visible pour le javascript).
En fait je pense que les choses auraient évolué un peu depuis que Steve réponse, avoir un regard sur le contenu du guide de lien qu'il a fourni, je peux voir un article sur Le Multi-Touch Événements et aussi Manipulation Des Événements De Mouvement.
N'ai pas essayé encore, mais ils semblent très prometteurs. Je vais vous donner une mise à jour une fois que j'ai vérifié et avoir un lien de démonstration disponible...
Je mesure le zoom de cette façon (fonctionne sur iOS uniquement):
Il ne dépend pas de la façon dont l'échelle de contenu.
Cependant, dans iOS Safari
window.innerWidth
n'est pas correct à l'intérieur d'ungestureend
gestionnaire. Vous devriez différer ce calcul pour exécution ultérieure. Dans GWT, j'utilisescheduleDeferred
mais je ne peux pas dire comment mettre en pur JavaScript.