2011-12-25 7 views
9

Jak sugeruje tytuł, potrzebuję obejścia, aby uniemożliwić mobilne safari przewijanie dokumentu, gdy koncentruje się obszar tekstowy. Domyślnym zachowaniem jest przewijanie strony tak, aby jej wierzchołek był wyrównany z górną częścią okna. Po prostu chcę, aby moja strona pozostała na miejscu. czy to możliwe?Zapobieganie ruchomemu safari po przewinięciu strony, gdy textarea skupia się na

+1

T Zerknij [na to] (http://stackoverflow.com/questions/6437911/disable-scroll-on-a-uiwebview-allowed) – tipycalFlow

+0

, więc chcesz, aby tekst był ukryty za klawiaturą? – soemarko

Odpowiedz

6

spróbować z tym

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

przewijania wydarzenie działa tylko wtedy, gdy element ma stałą wysokość i przelewowy własność ustawiony auto lub przewijania

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

sprawdzić przykład: http://jsfiddle.net/4YkNj/

6

Spróbuj tego:

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

i

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

Może trzeba czasomierza, aby umożliwić przeglądarka do przewijania textarea do góry przed blokując ruch.

+0

To byłoby prawidłowe rozwiązanie. Chociaż niektórzy bardziej zastanowili się, w jaki sposób będziecie musieli go wdrożyć, będą wymagane. Na przykład w wydarzeniu fokusowym? – Sphvn

Powiązane problemy