所以,我已经喝醉了网络应用程序kool-aid,我正在从构建Android原生应用程序转向构建网络应用程序。
但我在使用地址栏的Android浏览器上遇到了非常糟糕的问题(更新:具体来说,我的HTC Desire Z运行的是Android 2.3.3,我不确定它影响了多少其他版本):
因此,在某些情况下,地址栏会永久隐藏前30个内容。这严重破坏了。
我借用another StackOverflow question中的一些代码来尝试解决此问题:
if (navigator.userAgent.match(/Android/i)) {
window.scrollTo(0,0); // reset in case prev not scrolled
var nPageH = $(document).height();
var nViewH = window.outerHeight;
if (nViewH > nPageH) {
nViewH = nViewH / window.devicePixelRatio;
$('BODY').css('height',nViewH + 'px');
}
window.scrollTo(0,1);
}
但它似乎并不可靠 - 更不用说它是一个可怕的解决方案。我该怎么办?
答案 0 :(得分:0)
你的手机和手机安卓版是什么?我有一个星系s2 - 地址栏没有实现作为覆盖,真实内容在下面,而不是在地址栏后面。如果向下滚动地址栏将会上升并且不再可见。无论如何,这不是一个错误,它是一个功能!如果他进入你的网站一次,如果你这样做,用户就无法离开。如果您不想要这个“恼人的”地址栏,请使用WebView创建一个“普通”的Android应用,并在其中加载您想要的网站。
答案 1 :(得分:0)
这是NON-jQuery解决方案,可以在不滚动的情况下立即删除地址栏。此外,它可以在您旋转浏览器的方向时起作用。
function hideAddressBar(){
if(document.documentElement.scrollHeight<window.outerHeight/window.devicePixelRatio)
document.documentElement.style.height=(window.outerHeight/window.devicePixelRatio)+'px';
setTimeout(window.scrollTo(1,1),0);
}
window.addEventListener("load",function(){hideAddressBar();});
window.addEventListener("orientationchange",hideAddressBar());
它也适用于iPhone,但我无法测试。