2010-07-26 28 views
6

J'ai développé une application qui s'interface avec le système d'alerte d'urgence d'une institution. Comment ça marche, quand il y a une alerte, sur toutes les pages web de l'institution, il affiche un rectangle de défilement en haut de la page qui est mis en javascript en utilisant protoype et scriptaculous.Développement Web Android ... Largeur Div (texte intérieur plus probable) change en pixels en fonction du zoom de l'appareil

Tout cela fonctionne parfaitement sur les navigateurs de bureau (IE6-8, Chrome, Safari, Firefox, Opera). Cela fonctionne également bien sur les iPhones. Mon seul problème est le rendu sur Android. En recherchant le problème initialement, j'ai trouvé une propriété CSS pour les appareils mobiles (à savoir webkit) -webkit-text-size-adjust, qui empêche les appareils mobiles de redimensionner le texte lors du zoom et de changer l'orientation de l'écran. J'ai mis cette propriété à «aucun» comme indiqué par de nombreux articles.

Vous trouverez ci-dessous une image des captures d'écran d'un émulateur Android. La capture d'écran de gauche montre un grossissement 1x de la page. L'espacement entre chacun des messages est comme il se doit. La capture d'écran de droite montre la page zoomée. Les messages se chevauchent, car la taille du texte est rendue différemment, et la largeur div n'est pas assez large pour contenir le texte.

http://www.themonkeyonline.com/spacing-example.jpg

est le code ici qui place la div sur la page:

var marquee = new Element('div', { 'id' : 'marquee' + marquee_counter }) 
.setStyle({ 'display' : 'block' 
    , 'WebkitTextSizeAdjust' : 'none' 
    , 'fontSize' : '12px' 
    , 'lineHeight' : '25px' 
    , 'left' : $(marquee_container).getDimensions().width + 'px' }) 
.addClassName('marquee_text') 
.update(marquee_text); 
$(marquee_container).insert(marquee); 

Y at-il quelque chose que je suis absent?

Je continuerai de rechercher le problème dans l'immédiat. Merci à tous ceux qui ont lu tout ça. Une brève mise à jour ... après plus de tests, il apparaît que le problème n'est pas nécessairement basé sur le zoom. Il semble que le problème soit la fenêtre d'affichage. J'ai testé un texte vraiment long, et même zoomé complètement, il s'est chevauché. Il semble que la div contenant le texte ne se taille pas plus grande que la fenêtre.


Voici un exemple du code en action:

http://elliottr.www-dev.seminolestate.edu/alert/

Répondre

1

Pourriez-vous publier un lien vers une page de démonstration où ce problème se produit? J'ai essayé de le reproduire sur mon Milestone, mais je n'ai pas pu.

+0

Je configure une page de test sur mon sous-site Web: http://elliottr.www-dev.seminolestate.edu/alert/ – Riley

+1

Ceci est étrange. Il fonctionne comme il se doit sur mon Milestone fonctionnant sous Android 2.1 en mode horizontal et vertical et quel que soit le niveau de zoom. – Daniel

+0

Merci Daniel.Le 'WebkitTextSizeAdjust' semble fonctionner comme annoncé dans 2.1. Étrange, je l'ai testé sur un EVO l'autre jour et ça a eu le même problème. Cependant, je l'ai juste testé sur un DROID, et ça fonctionnait correctement. – Riley

0

essayez de définir une largeur de limiter la taille de div (vous devrez également définir la position: relative) et trop-plein: caché , donc le texte ne dépassera pas la taille de div

+0

J'ai testé la définition d'une largeur sur les DIVs. J'ai toujours eu le même problème. Même si dans l'application du monde réel pour le système, la définition de largeurs absolues sur les DIV n'est pas une option viable. Les DIV sont placées absolument à l'intérieur d'un élément relativement positionné. C'est ce qui permet à scriptaculous de les "faire défiler" à travers l'écran. – Riley

+0

et débordement, cela a-t-il fonctionné? –

+0

L'application de débordement: caché aux divs fonctionnerait en théorie. Cependant, puisque le texte est de largeur variable, ce n'est pas une solution réelle à cette application. – Riley