safari浏览器用户在输入一些诸如用户名密码一类的东西时,通常会发生输入法遮挡住输入框的情况,而其他浏览器不会.

那是因为其他浏览器例如Chrome,当用户输入法弹出时,浏览器高度也随之改变,变为手机屏幕高度-输入法高度,所以我们能在弹出输入法后依然能滑动浏览器到底部.
但是safari不同,用户输入法弹出后浏览器高度不会改变,当用户输入时,如果输入框下方页面足够长,浏览器会自动滑动页面,让输入框在输入法上方,倘若输入框下方的页面不够往上抬,则只能让输入法遮住输入框.

此解决方案思路为当用户输入时,在html底部,即页面底部添加一个带高度的空div,使其高度约等于输入法高度.用户结束输入时,移除此div.

$().ready(function(){
    $('input').focus(function(){
        if (isBrowser() == "Safari") {
            var clear_height = 0;
            clear_height = $(window).height() / 3;
            $('html').append(
                '<div class="fucking_safari" style="width:100%;">'+
                '</div>'
            );
            $('.fucking_safari').height(clear_height);
        }
    })

    $('input').blur(function(){
        if (isBrowser() == "Safari") {
            $('.fucking_safari').remove();
        }
    })
})

isBrowser()为判断浏览器函数,详情见此,在需要用到的页面引入此js即可.