-1

それで、私は Web アプリの kool-aid を飲み干し、Android ネイティブ アプリの作成から Web アプリの作成に切り替えています。

しかし、アドレスバーのある Android ブラウザーで非常に悪い問題が発生しています (更新: 具体的には、Android 2.3.3 を実行している私の HTC Desire Z、影響を受ける他のバージョンの数はわかりません):

  • 問題 1: ページの読み込み中に、アドレス バーでコンテンツの上部 ~30 ピクセルが非表示になります。(一体どうしてこんなことをするの!?)
  • 問題 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);
  } 

しかし、それは確実に機能していないようです-それが恐ろしい解決策であることは言うまでもありません. 私に何ができる?

4

2 に答える 2

0

これは、スクロールせずにアドレスバーを即座に削除する非 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 でも動作するはずですが、テストできませんでした。

于 2012-02-01T16:58:18.763 に答える
0

お使いの携帯電話と携帯電話の Android バージョンは何ですか? 私はgalaxy s2を持っています-アドレスバーはオーバーレイとして実装されておらず、実際のコンテンツはアドレスバーの後ろではなく下にあります。下にスクロールするとアドレスバーが上がり、見えなくなります。とにかく、それはバグではなく、機能です! ユーザーが一度あなたのサイトにアクセスした場合、そのユーザーは離れることはできません。この「迷惑な」アドレスバーが必要ない場合は、WebViewを使用して「通常の」Android アプリを作成し、そこに目的のサイトをロードします。

于 2011-12-16T18:56:36.383 に答える