2011-09-14 13 views

Odpowiedz

60

znalazł.

if (navigator.userAgent.match(/(iPod|iPhone|iPad)/)) { 
    if (browserRatio >=1.5) { 
     $container.css('min-height', '360px'); 
    } else { 
     $container.css('min-height', '555px'); 
    } 
} 
+5

navigator.userAgent.match (/ (iPod | iPhone | iPad)/i) działał dla mnie tam, gdzie nie był (i sprawia, że ​​jest niewrażliwy na wielkość liter) –

+7

Może to jeszcze bardziej skompaktować:/(ip (hone | od | ad))/i :) – backdesk

+0

To nie jest najlepsze rozwiązanie, ponieważ pasuje również do WP IE. Przykład UA z IE11: 'Mozilla/5.0 (Mobile, Windows Phone 8.1, Android 4.0, ARM, Trident/7.0; Touch; rv: 11.0; IEMobile/11.0; NOKIA; Lumia 925) lub iPhone OS 7_0_3 Mac OS X AppleWebKit/537 (KHTML, podobnie jak Gecko) Mobile Safari/537' – seniorpreacher

2

wiem pytasz o jQuery w szczególności, ale IMO, prawie na pewno chcesz używać CSS3 @media queries dla tego. Istnieje nawet wsparcie dla testowania dla landscape or portrait orientation.

@media (orientation:landscape) { 
    .container_selector { 
    min-height: 555px; 
    } 
} 
@media (orientation:portrait) { 
    .container_selector { 
    min-height: 360px; 
    } 
} 

Mam nadzieję, że to pomoże!

+0

słyszę .. Zastosowanie + kocham je, ale w tym przypadku, to kopanie w minutach -wzrost, który dotyczy tylko iOS, gdy nie jest w trybie aplikacji internetowej. Musi to być skrypt: ( – technopeasant

+0

) i mógłbym celować w iPhone 4 specjalnie z opcją -webkit-min-device-pixel-ratio: 2, ale niestety nie ma css, jeśli/to, chyba że używasz specjalistycznej biblioteki – technopeasant

+0

, więc możesz użyć właściwości window.screen.height/width, czy też to nie pomogłoby? Nie wiem, co masz na myśli przez "kiedy nie w trybie aplikacji internetowej". – jimbojw

-1

Na podstawie komentarzy do mojej poprzedniej odpowiedzi brzmi to tak, jak prawdziwe pytanie brzmi "jak ukryć pasek adresu URL w iPhonie". Na to pytanie, znalazłem to:

How to Hide the Address Bar in MobileSafari:

<body onload="setTimeout(function() { window.scrollTo(0, 1) }, 100);">...</body> 
+1

nie, to nie. Chciałbym zidentyfikować agenta użytkownika iOS, który zastosuje if/then W celu wyjaśnienia trybu aplikacji internetowej na iOS, stworzyłem ładny mały diagram: http://cl.ly/0d2V0o3O453a123v192u – technopeasant

+0

ładne makiety i fajny pomysł jimbojw, wykorzystam w przyszłości. – Brandito

1

Aby to zadziałało, musisz zdefiniować browserWidth, ale tak, to zadziała. Tutaj kierowałem tylko na iPada.

$(window).load(function(){ 
     var browserWidth = $(window).width(); 

     if (navigator.userAgent.match(/(iPad)/)) { 
     if (browserWidth == 768) { 
      $('.sectionI').css({'margin-left': '30px'}); 
     } else if (browserWidth == 1024) { 
      $('.sectionI').css({'margin-left': '0px'}); 
     } 
     } 
    }); 
0

Do wersji aplikacji internetowej wypróbuj to.

if (
    ("standalone" in window.navigator) && 
    !window.navigator.standalone 
    ){ 

    // .... code here .... 
} 
0

Aby upewnić się, że ciąg nie zostanie dopasowana: Mozilla/5.0 (Mobile; Windows Phone 8.1; Android 4.0; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 925) like iPhone OS 7_0_3 Mac OS X AppleWebKit/537 (KHTML, like Gecko) Mobile Safari/537 prostu zmienić swój kod do

if (navigator.userAgent.match(/(\(iPod|\(iPhone|\(iPad)/)) { 
    if (browserRatio >=1.5) { 
     $container.css('min-height', '360px'); 
    } else { 
     $container.css('min-height', '555px'); 
    } 
}