2012-06-12 22 views
9

Sto avendo un problema con il browser stock Android su una pagina che sto costruendo. In poche parole, la pagina non scorrerà verticalmente senza zoomare prima. Ho pensato di aver capito quando ho scoperto che il tag riportava un'altezza inferiore rispetto alla finestra del browser, ma il problema non ha risolto il problema di scorrimento. (La casella nera nella pagina indice riporta l'altezza calcolata dell'elemento.)Android browser di default non lo scorrimento della pagina web

Il mio dispositivo di test è un Droid Incredible con Android 2.3. Lo scorrimento funziona su Firefox per Android, così come sul mio tablet Android 4.0 e su tutti i dispositivi iOS.

mio dev build del sito è qui: www.adamjdesigns.info/csu/engage

EDIT - Altro codice ho provato:

  1. <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
  2. if(navigator.userAgent.match(/Android 2/) && $(window).height() < 600) { $('html').css({'height':$(window).height(),'overflow':'auto'}); }

Qualsiasi aiuto è molto apprezzato!

+0

Non è una risposta, ma ho visto questo comportamento con i browser basati su webkit basati su 2.3 quando si naviga semplicemente. E 'stato un evento comune quindi la mia ipotesi è che questo è un bug che è stato risolto in HC in poi. Sto solo dicendo ... – Simon

+0

Grazie, Simon. Almeno aiuta a sapere che non è necessariamente qualcosa con la mia codifica che sta causando il problema. Sfortunatamente, la scusa per i bug non mi mette in difficoltà con il mio capo! – AdamJ

+0

Potresti procurarti un dispositivo con 2.3, magari flashare una ROM personalizzata, quindi navigare per 15 minuti - con un po 'di fortuna troverai presto una pagina che mostra il comportamento - IIRC, ironicamente i documenti dell'SDK di Android sembrano farmi questo. .specific device era un Advent Vega con una ROM personalizzata di 2.3. – Simon

risposta

3

ho capito! C'è stato un iframe per un video di YouTube nella pagina, e non sono sicuro se è il iframe stesso o il relativo script per riprodurre il video al suo interno, ma la rimozione che dal DOM ha risolto il problema. (Lo avevo impostato su nascosto sugli schermi mobili comunque.)

Grazie per il vostro aiuto, a tutti!

+0

Ciao sto affrontando lo stesso problema. In una pagina html sto usando un iframe, l'iframe elenca una struttura simile a una galleria ed è un design reattivo. Funziona bene su iphone. Ma la pergamena non funziona sul mio nix google. Scorre fino a un certo grado e smette di scorrere. Eventuali suggerimenti? –

1

Prova questo per la vostra finestra:

<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> 
+0

Buon suggerimento, ma ho già capito. Ho usato l'HTML5 Boilerplate, che includeva quello. Ho anche provato a specificare manualmente 'overflow: scroll' su' 'inutilmente. – AdamJ

9

Anche se è un hack, ho un altro fix che potrebbe aiutare gli sviluppatori. Ho scoperto che con il browser Android 2.3.4 di serie, se si aumenta la dimensione iniziale del caricamento della pagina da "1" a una dimensione leggermente maggiore, lo scorrimento verticale funziona senza dover prima incastrare lo zoom. Ad esempio:

+1

Questo ha risolto un problema simile per me, grazie. – Dave

+0

Molto benvenuto, Dave - felice di sentirlo. – Gatsby

+0

Sembra che sto facendo qualcosa di illegale, grazie mille !, ha funzionato per me su emulatore e dispositivo Android. – porfiriopartida

2

Quello che ho trovato essere il problema era che avevo aggiunto overflow-x: hidden; alla mia etichetta del corpo. Questo dovrebbe disattivare la barra di scorrimento orizzontale, ma invece in Android si spegne lo scroller verticale. E in Android, posso scorrere solo in orizzontale. Probabilmente un bug nel browser Android. Sto usando vecchi telefoni Android (HTC Thunderbolt). Ho esaminato il mio file css e rimosso tutto overflow-x: hidden e ora posso scorrere di nuovo in verticale.

3

FWIW, stavo avendo un problema simile con la mia pagina web non scorrendo in Android 2.3. Ho usato la risposta di Gatsby con alcuni Javascript condizionali per risolvere il problema. Qui è il mio codice finale:

<meta name="viewport" content="width=device-width, initial-scale=1.00"/> 
<script type="text/javascript"> 
    window.onload=function(){ 
     var ua = navigator.userAgent; 
     if(ua.indexOf("Android")>=0){ 
      var androidversion=parseFloat(ua.slice(ua.indexOf("Android")+8)); 
      if(androidversion<=2.3){ 
       document.getElementsByName("viewport")[0].setAttribute("content","width=device-width, initial-scale=1.02"); 
      } 
     } 
    }; 
</script> 

Questa soluzione prima imposta il normale meta tag viewport che funziona alla grande con la maggior parte dei dispositivi, quindi utilizza JavaScript condizionale per rilevare la versione Android e modificare il contenuto meta tag per il valore "hacked" (fornito da Gatsby) che consente lo scorrimento su Android < = 2.3. Ciò impedisce lo scorrimento orizzontale non necessario per i dispositivi che non richiedono l'hack.

+0

Ho appena avuto questa situazione e questo l'ha risolto. Io uso jquery ma l'ho inserito sopra il file js principale da solo e funziona. – BlekStena

Problemi correlati