2011-12-25 25 views
9

Como sugiere el título, necesito una solución para evitar que Safari móvil desplace el documento cuando se enfoca un área de texto. El comportamiento predeterminado es desplazar la página para que la parte superior del texto esté alineada con la parte superior de la ventana. Solo quiero que mi página se quede. es posible?Evitar que safari móvil se desplace por la página cuando se enfoca en texto

+1

T eche un vistazo [a esto] (http://stackoverflow.com/questions/6437911/disable-scroll-on-a-uiwebview-allowed) – tipycalFlow

+0

, entonces, ¿quiere que el área de texto se oculte detrás del teclado virtual? – soemarko

Respuesta

6

tratar con este

// javascript.js 
var locked_scroll = false; 
var last_pos = 0; 

document.getElementById('my-text').addEventListener('focus', function(event){ 
    console.log('set locked'); 
    locked_scroll = true; 
    last_pos = document.getElementById('wrapper').scrollTop 
}); 

document.getElementById('my-text').addEventListener('blur', function(event){ 
    console.log('set unlocked'); 
    locked_scroll = false; 
}); 

document.getElementById('wrapper').addEventListener("scroll", function(event){ 

    if(locked_scroll) { 
     event.target.scrollTop = last_pos; 
    } 

}, true); 

el rollo caso sólo funciona cuando el elemento tiene una altura fija y la propiedad desbordamiento ajustado a automático o desplazamiento

#wrapper { 
    height: 300px; 
    overflow: auto;  
} 

verificación de la ejemplo: http://jsfiddle.net/4YkNj/

6

Prueba esto:

<script type="text/javascript"> 
    function blockMove() { 
     event.preventDefault() ; 
} 
</script> 

y

<input name="textbox" type="text" value="" onkeyup="blockMove;"/> 

Tal vez usted necesita un contador de tiempo para permitir que el navegador para desplazarse al área de texto al principio antes de bloquear el movimiento.

+0

Esta sería una solución válida. Aunque sería necesario pensar más en la forma en que necesitaría implementarlo. En un evento de enfoque, etc. tal vez? – Sphvn

Cuestiones relacionadas