safari iOS - 禁用输入焦点上的隐藏地址栏

时间:2011-12-15 17:56:24

标签: javascript html ios safari

有没有办法禁用在safari iOS中点击输入框时发生的滚动?我的网站不太适合滚动发生,实际上使网站不那么用户友好。

我尝试过使用:

$('input,select,textarea').bind('focus',function(e) { 
window.scrollTo(0, 0);
});

但它只会强制safari滚动到我的文档顶部,这意味着地址栏仍然是“隐藏”。我只是不明白为什么如果window.scrollTo(0,1)应该“隐藏”地址栏,为什么window.scrollTo(0,0)不显示它?

同样,当textarea滚动/滑过时,有没有办法阻止safari滚动文档?目前,如果我向下滚动页面并碰巧在textarea字段中滚动,它会滚动整个页面。实际上,第二眼看来,它似乎也会在输入字段上执行此操作。

2 个答案:

答案 0 :(得分:1)

当输入聚焦于此代码时,我很幸运地阻止地址栏出现。这是垃圾邮件,但这是一个相当短暂的爆发,似乎可以解决问题。

var top = 1; // or your input box position
var spamStop = (new Date()).getTime() + 10; 
var scrollSpam_id = setInterval(function () {
    var t = (new Date()).getTime();
    if (t > spamStop) {
      clearInterval(scrollSpam_id);
    } else {
      window.scrollTo(0, top);
    }
}, 1);

答案 1 :(得分:1)

我知道这是一个老问题,但以后可能对某人有所帮助:)。

这就是我所做的,因此地址栏不会显示在输入焦点上,同时在检测到任何滚动事件时始终隐藏地址栏。

var inputInFocus=false;
$('input').focus(function(){
  inputInFocus=true;
});
$('input').blur(function(){
  inputInFocus=false;
  setTimeout("$(document).scrollTop(0);",0);
});
/*detect any scroll function and hide address bar*/
$(window).scroll(function(){
  if(!inputInFocus){
setTimeout("$(document).scrollTop(0);",200);
  }
});