Safari iOS - 在输入焦点上禁用隐藏地址栏
Posted
技术标签:
【中文标题】Safari iOS - 在输入焦点上禁用隐藏地址栏【英文标题】:safari iOS - disable hiding address bar on input focus 【发布时间】:2012-01-21 09:49:59 【问题描述】:有没有办法禁用在 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 字段,它会滚动整个页面。实际上,再看一遍,它似乎有时也会在输入字段上执行此操作。
【问题讨论】:
如果这有什么不同的话,我正在使用 iscroll。 【参考方案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);
【讨论】:
【参考方案2】:我知道这是一个老问题,但以后可能会对某人有所帮助:)
这就是我所做的,这样地址栏就不会显示在输入焦点上,而总是在检测到任何滚动事件时隐藏地址栏。
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);
);
【讨论】:
我认为这行不通。它在每次滚动事件后向上滚动,因此会阻止网站上的自然滚动。您的意思是在评论之后检查“if(inputFocus)”吗?以上是关于Safari iOS - 在输入焦点上禁用隐藏地址栏的主要内容,如果未能解决你的问题,请参考以下文章