2010-07-26 12 views
6

Ho sviluppato un'applicazione che si interfaccia con il sistema di allarme di emergenza di un'istituzione. Come funziona, quando c'è un avviso, su tutte le pagine web dell'istituzione mostra una selezione scorrevole nella parte superiore della pagina che viene inserita da javascript usando protoype e scriptaculous.Sviluppo Web Android ... Larghezza div (più probabile testo interno) cambia in pixel in base allo zoom del dispositivo

Tutto ciò funziona perfettamente sui browser desktop (IE6-8, Chrome, Safari, Firefox, Opera). Funziona bene anche con gli iPhone. Il mio unico problema è il rendering su Android.

Nella ricerca iniziale del problema, ho trovato una proprietà CSS per dispositivi mobili (ovvero webkit) -webkit-text-size-adjust, che impedisce ai dispositivi mobili di ridimensionare il testo durante lo zoom e la modifica dell'orientamento dello schermo. Ho impostato questa proprietà su "nessuno" come indicato da molti articoli.

Di seguito è riportata un'immagine delle schermate di un emulatore Android. La schermata di sinistra mostra 1x ingrandimento della pagina. La spaziatura tra ciascuno dei messaggi è come dovrebbe essere. La schermata di destra mostra la pagina ingrandita. I messaggi si sovrappongono, in quanto la dimensione del testo viene renderizzata in modo diverso e la larghezza div non è sufficientemente ampia da contenere il testo.

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

Qui è il codice che pone l'div sulla pagina:

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); 

C'è qualcosa che mi manca?

Continuerò a cercare il problema al momento. Grazie a tutti quelli che hanno letto tutto questo.


Un breve aggiornamento ... dopo ulteriori test, sembra che il problema non sia necessariamente basato sullo zoom. Sembra che il problema sia il punto di vista. Ho provato un testo molto lungo e, anche ingrandito, si è sovrapposto. Sembra che il div che contiene il testo non si dimensionerà più della finestra.


Ecco un esempio del codice in azione:

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

risposta

1

Potresti pubblicare un collegamento a una pagina di prova in cui si verifica questo problema? Ho provato a riprodurlo sul mio Milestone, ma non potevo.

+0

Ho impostato una pagina di test sul mio subweb di sviluppo: http://elliottr.www-dev.seminolestate.edu/alert/ – Riley

+1

Questo è strano. Funziona come dovrebbe sul mio Milestone che esegue Android 2.1 in modalità orizzontale e verticale e indipendentemente dal livello di zoom. – Daniel

+0

Grazie, Daniel.Il "WebkitTextSizeAdjust" sembra funzionare come pubblicizzato in 2.1. Strano, l'ho provato su un EVO l'altro giorno e aveva lo stesso problema. Tuttavia, l'ho appena testato su un DROID e funzionava correttamente. – Riley

0

provare a impostare una larghezza di limitare le dimensioni del div (sarà necessario anche impostare position: relative) e impostare overflow: hidden , quindi il testo non andrà oltre la dimensione div

+0

Ho verificato l'impostazione di una larghezza sui DIV. Ho ancora avuto lo stesso problema. Anche se nel mondo reale l'applicazione per il sistema, l'impostazione di larghezze assolute sui DIV non è un'opzione praticabile. I DIV sono posizionati assolutamente all'interno di un elemento posizionato relativamente. Questo è ciò che permette a scriptaculous di "farli scorrere" attraverso lo schermo. – Riley

+0

e overflow, ha funzionato? –

+0

Applicazione di overflow: nascosto ai div in teoria funzionerebbe. Tuttavia, poiché il testo è di larghezza variabile, questa non è una soluzione reale a questa applicazione. – Riley

Problemi correlati