当textarea聚焦时,防止移动safari滚动页面

9 javascript web-applications ios

正如标题所暗示的那样,我需要一种解决方法来阻止移动safari在textarea聚焦时滚动文档.默认行为是滚动页面,使textarea的顶部与窗口顶部对齐.我只想让我的页面保持不变.这可能吗?

Pea*_*kJi 6

试试这个:

<script type="text/javascript">
   function blockMove() {
      event.preventDefault() ;
}
</script>
Run Code Online (Sandbox Code Playgroud)

<input name="textbox" type="text" value="" onkeyup="blockMove;"/>
Run Code Online (Sandbox Code Playgroud)

也许您需要一个计时器来允许浏览器在阻止移动之前将textarea滚动到顶部.


rkm*_*max 6

尝试这个

// 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);
Run Code Online (Sandbox Code Playgroud)

事件滚动仅在元素具有固定高度且overflow属性设置为autoscroll时才有效

#wrapper {
    height: 300px;
    overflow: auto;    
}
Run Code Online (Sandbox Code Playgroud)

查看示例:http: //jsfiddle.net/4YkNj/