Обнаружение браузера эмулятора Android

Я разрабатываю мобильную версию веб-сайта. Я в настоящее время использую этот JavaScript, чтобы обнаружить и перенаправить пользователя:

if((navigator.userAgent.match(/iPhone/i)) || 
                (navigator.userAgent.match(/Android/i)) ||
                (navigator.userAgent.match(/iPod/i))) 
        { 
        window.location = "http://sitename.com/m/";
    }

Хорошо работает с iPhone и iPod, но никаким успехом с Android. Я использую Эмулятор Android в Eclipse. У меня нет гаджета Android для фактического тестирования его.

Я делаю что-то не так? Кто-либо имеющий ту же проблему?

7
задан Anthony Forloney 12 February 2010 в 19:40
поделиться

1 ответ

Поскольку ArrayFlatten был представлен в системе Mathematica 6 наименее запутанным решением должно быть

matrix = {{1, 2}, {2, 3}}
vector = {{4}, {5}}

ArrayFlatten@{{vector, matrix}}

Хорошая хитрость заключается в том, что замена любого блока матрицы на 0 дает нулевой блок нужного размера.

-121--2925300-

Вы могли бы написать небольшой шаблонный метапрограммный код, чтобы выяснить его во время компиляции, если он вам нужен для размеров массива:

template<unsigned long long N> struct NBytes
{ static const size_t value = NBytes<N/256>::value+1; };
template<> struct NBytes<0> 
{ static const size_t value = 0; };

int main()
{
    std::cout << "short = " << NBytes<SHRT_MAX>::value << " bytes\n";
    std::cout << "int = " << NBytes<INT_MAX>::value << " bytes\n";
    std::cout << "long long = " << NBytes<ULLONG_MAX>::value << " bytes\n";
    std::cout << "10 = " << NBytes<10>::value << " bytes\n";
    std::cout << "257 = " << NBytes<257>::value << " bytes\n";
    return 0;
}

вывод:

short = 2 bytes
int = 4 bytes
long long = 8 bytes
10 = 1 bytes
257 = 2 bytes

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

-121--1466490-

Вы должны использовать location.replace вместо window.location

Пример:

if( (navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/Android/i)) || (navigator.userAgent.match(/iPod/i)) ) { 
    location.replace("http://sitename.com/m/");
}

Я использовал этот код и он работает на телефонах/устройствах iphone/itouch и android.

12
ответ дан 6 December 2019 в 14:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: