2011-12-16 3 views
-1

Итак, я выпил приложение kool-помощи для веб-приложений, и я перехожу от создания собственных приложений для Android к созданию веб-приложений.Ошибка в Android-браузере: адресная строка скрывает контент

Но у меня действительно плохие проблемы на Android браузеров с адресной строкой (обновление: в частности, мой HTC Desire Z работает Android 2.3.3, я не знаю, сколько других версий она влияет):

  • Проблема 1. Когда страница загружается, адресная строка скрывает верхнюю часть ~ 30px содержимого. (Почему это так ?!)
  • Проблема 2: В некоторых ситуациях адресная строка не исчезнет - это происходит для меня в портрете, когда скорость соединения медленная.

Так что в некоторых случаях адресная строка скрывает верхний 30px контента на постоянной основе. Это серьезно нарушено.

Я заимствовал некоторый код из 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

Вы разрабатываете веб-приложение для загрузки с помощью браузера Android и выпускаете приложение для Android? –

+0

Нет, я просто хочу написать веб-приложение - никаких планов не выпускать на рынке. – Richard

ответ

0

Какой у вас телефон и номера телефонов Android? У меня есть галактика s2 - адресная строка не реализована в виде наложения, реальный контент ниже, а не по адресной строке. Если вы прокрутите страницу вниз, адресная панель пойдет вверх, и она больше не будет видна. Во всяком случае, это НЕ ошибка, это особенность! Пользователь не мог уйти, если бы он вошел в ваш сайт один раз, если вы это сделаете. Если вам не нужен этот «раздражающий» адресный бар, создайте «нормальное» приложение для Android с WebView и загрузите туда нужный сайт.

+0

Я использую HTC Desire Z с Android 2.3.3. Это определенно ошибка! Адресная строка не * уходит *, как только сайт загружен, он просто перемещается выше, так что скрытый контент отображается, скрывая строку состояния телефона в этом процессе. Это должно произойти сразу. – Richard

+0

И да, я мог бы просто создать приложение для Android, но Google хочет, чтобы люди создавали веб-приложения или нет? – Richard

+0

@Richard Пожалуйста, используйте функцию editallall, если вы хотите добавить что-то к своему последнему заявлению, просто для ясности. Да, это правильно. Дело в том, что если ваше приложение не находится на ЛЮБОМ рынке (Android, AppStore), ваше веб-приложение просто не будет найдено. Вы просто создаете очень простой sceleton в своем приложении android/iphone, которое просто представляет веб-просмотр. Результат: ваши приложения отображаются на рынке приложений + Ваше приложение очень динамично (в крайнем случае вы можете использовать функции, отличные от веб-приложений) + У вас нет проблем с браузером, и во всем этом ваше приложение по-прежнему выглядит то же самое везде! – poitroae

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, но я не мог проверить это.