Как стать автором
Обновить

Как отличить версию iPad в Safari

Время на прочтение1 мин
Количество просмотров5.6K
На днях встала задача: во что бы то ни стало, нужно было отличить iPad1 от iPad2 в браузере. iPad3 можно отличить с помощью window.devicePixelRatio, а вот с первыми двумя проблема. Детальное изучение всего объекта window результатов не дало. Появилась мысль попытаться отличить их по видеокарте с помощью WebGL, но WebGL заблокирован.

Было решено попробовать нагрузить проц. Следующий код дал очень забавный результат.

var rad = 37.5 * (Math.PI / 180),
    width = 11.32424654356,
    z,
    cache,
    time = new Date().getTime();
for (z = 150000; z-- ;){
    cache = width * z * Math.sin(rad) + width * z * Math.cos(rad);
}
console.log(new Date().getTime() - time);

На iPad1 результат стабилен: ≈113—118ms и в случае сильной загруженности будет только больше.
На iPad2 результат стабилен: ≈60ms и в случае сильной загруженности будет только больше.
Предлагаю считать 100ms барьером определения версии, и прогонять этот тест при первой загрузке приложения, записывая результат в localStorage.

P.S.: разумеется код нужно причесать, но здесь важен посыл.

upd: Crystall предложил отличное решение. Спасибо!
Теги:
Хабы:
Всего голосов 34: ↑22 и ↓12+10
Комментарии24

Публикации

Истории

Работа

Ближайшие события

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
19 сентября
CDI Conf 2024
Москва
20 – 22 сентября
BCI Hack Moscow
Москва
24 сентября
Конференция Fin.Bot 2024
МоскваОнлайн
25 сентября
Конференция Yandex Scale 2024
МоскваОнлайн
28 – 29 сентября
Конференция E-CODE
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
30 сентября – 1 октября
Конференция фронтенд-разработчиков FrontendConf 2024
МоскваОнлайн
3 – 18 октября
Kokoc Hackathon 2024
Онлайн