Я разрабатываю мобильную версию веб-сайта. Я в настоящее время использую этот 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 для фактического тестирования его.
Я делаю что-то не так? Кто-либо имеющий ту же проблему?
Поскольку ArrayFlatten
был представлен в системе Mathematica 6 наименее запутанным решением должно быть
matrix = {{1, 2}, {2, 3}}
vector = {{4}, {5}}
ArrayFlatten@{{vector, matrix}}
Хорошая хитрость заключается в том, что замена любого блока матрицы на 0
дает нулевой блок нужного размера.
Вы могли бы написать небольшой шаблонный метапрограммный код, чтобы выяснить его во время компиляции, если он вам нужен для размеров массива:
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.