Ошибка в веб-браузере Android: адресная строка скрывает контент - PullRequest
0 голосов
/ 16 декабря 2011

Итак, я выпил kool-aid веб-приложения и переключаюсь с создания собственных приложений Android на создание веб-приложений.

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

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

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

Я позаимствовал некоторый код у другого вопроса StackOverflow , чтобы попытаться исправить это:

  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);
  } 

Но, похоже, он не работает надежно - не говоря уже о том, что это ужасное решение. Что я могу сделать?

Ответы [ 2 ]

0 голосов
/ 01 февраля 2012

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

0 голосов
/ 16 декабря 2011

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

...