Лесен начин за идентифициране на потребителски агент на iOS в оператор if/then на jQuery?

Точно както звучи..

Има ли някакъв вълшебен и лесен начин да се каже:

    if (user agent is iOS) {
        if (browserRatio >=1.5) {
            $container.css('min-height', '360px');
        } else {
            $container.css('min-height', '555px');
        }
     }

person technopeasant    schedule 14.09.2011    source източник


Отговори (6)


Намерих го.

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

Тази тема в SO е за многоизмерен масив в c++.

Трябва да пренеса някакъв код от c# към cpp. имам код като този:

private double[,] B;
...
this.B = new double[states, symbols];
double[][, ,] epsilon = new double[N][, ,]; 
double[][,] gamma = new double[N][,];
...
s += gamma[i][t, k] = ...

Мислех да използвам обикновен двоен масив от масив, но е доста мъчно. друго решение може да бъде вектор на вектор на двойно или персонализирани класове Matrix2D и Matrix3D?

кой е най-добрият начин за всеки от тези случаи?



КАКВО НАУЧИХ:

  • многомерният масив в c++ е страхотна тема, а интернет е пълен с ресурси. може да се работи по различни начини, някои от тях наистина трудни, други по-бързи за писане.

  • Мисля, че най-добрият начин да се справим с това е да използваме някои библиотеки, които вземат предвид тази тема. има много от тях: Armadillo (хубаво преобразуване на синтаксиса в MATLAB), Eigen според мен е един от по-добрите, лесен за инсталиране, лесен за използване, мощен. Boost::multi_array е друг и Boost е наистина известна библиотека, която е важна само за да погледнете как се справя с темата. Както отговорът на Конрад Рудолф STD с вложени вектори или това може да е друго решение, но след малко търсене, мисля, че колкото по-малко елегантно, толкова по-лесно и бързо се кодира без външни библиотеки.

  • напишете персонализиран клас. може би толкова добро упражнение. отговор на Питър или това или това са добра отправна точка и също тази публикация е интересна, но особено тази страхотен пост блог от martin moene (едно от най-добрите есета на тази тема, които съм чел днес). Споменавам също този отговор за разреден масив.

  • ето един хубав урок директно от stroustrup

  • приятно прекарване с многоизмерен масив :-)

- person Nick Spiers; 16.09.2011
comment
Може да се уплътни още повече: /(ip(hone|od|ad))/i :) - person backdesk; 27.11.2012
comment
Това не е най-доброто решение, тъй като съответства и на WP IE. Пример UA от 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) like iPhone OS 7_0_3 Mac OS X AppleWebKit/537 (KHTML, like Gecko) Mobile Safari/537 - person seniorpreacher; 10.11.2015
comment
Вярно е, че много неща в различните браузъри могат да се обработват чрез медийни заявки. Има обаче някои неща, които са специфични за браузъра. Например цветът на фона за автоматично завършване в браузърите, а не в разделителните способности, е различен. Ако някой трябва ръчно да зададе цвета на фона на входен елемент, за да имитира автоматично попълване (уеб приложението, с което работя, прави това), тогава трябва да знае кой браузър работи. Затова благодаря за отговора по-горе. Това е на място. - person jkwuc89; 30.09.2016
comment
@seniorpreacher Струва ми се, че WP IE се опитва да бъде включен в този мач, като умишлено включва потребителския агент на iOS Safari в края. Така че може би това не е толкова неочаквано поведение. - person Goulash; 24.03.2018

Знам, че питате конкретно за jquery, но IMO, почти сигурно искате да използвате CSS3 @media заявки за това. Има дори поддръжка за тестване за пейзажна или портретна ориентация.

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

Надявам се това да помогне!

person jimbo    schedule 14.09.2011
comment
чувам те.. използвай + обичам ги, но за този случай рита минимална височина, която е само за iOS, когато не е в режим на уеб приложение. Така че трябва да е скрипт :( - person technopeasant; 14.09.2011
comment
и бих могъл да се насоча конкретно към iPhone 4 с -webkit-min-device-pixel-ratio: 2, но за съжаление няма css if/then, освен ако не използвате специализирана библиотека - person technopeasant; 14.09.2011
comment
така че бихте ли могли да използвате свойствата window.screen.height/width или и това няма да помогне? Не знам какво имате предвид, когато не сте в режим на уеб приложение. - person jimbo; 14.09.2011
comment
не съм запознат с window.screen.height/width... звучи интригуващо. iPhone имат URL лента в браузъра, която се премахва, когато даден сайт е с възможност за уеб приложение. за да го представя за средния потребител, посещаващ сайта, можете да принудите URL лентата да се скрие с javascript, но за да го направя, трябва да имам дефинирана височина на сайта. така че.. Използвам if/then, за да поставя подходящата височина в режим на фалшиво уеб приложение - person technopeasant; 14.09.2011

За да работи това, ще трябва да дефинирате browserWidth, но да, ще работи. Тук се насочих само към iPad.

    $(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'});
        }
      }
    });
person Aaron    schedule 12.08.2014

За версия на уеб приложение опитайте това.

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

    // .... code here ....
}
person Aaron    schedule 26.01.2015

За да сте сигурни, че този низ няма съвпадение: 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 просто променете кода си на

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

Въз основа на коментарите към предишния ми отговор звучи така, сякаш истинският въпрос е „как се скрива URL лентата в iPhone“. На този въпрос намерих това:

Как да скриете адресната лента в MobileSafari:

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