Проблемы совместимости при обнаружении вращения
Определение поворота устройства с помощью JavaScript в Браузер на телефонах Android может быть более сложным по сравнению с iPhone, у которых есть четко определенный подход. Поведение на разных устройствах Android может быть непоследовательным, с различиями в последовательности и частоте событий, а также с изменениями таких значений, как screen.width и window.orientation.
Надежный подход к обнаружению поворота
Чтобы устранить эти несоответствия, рекомендуется прослушивать события изменения размера и ориентации и реализовать опрос в качестве меры безопасности. Такой подход гарантирует, что вы в конечном итоге получите допустимое значение ориентации.
var previousOrientation = window.orientation;
var checkOrientation = function(){
if(window.orientation !== previousOrientation){
previousOrientation = window.orientation;
// Handle orientation change as needed
}
};
window.addEventListener("resize", checkOrientation, false);
window.addEventListener("orientationchange", checkOrientation, false);
// (Optional) Poll for orientation changes on Android (180 degree turns)
setInterval(checkOrientation, 2000);
Последовательности событий и изменения значений
Последовательность событий и изменения значений различаются на разных устройствах. Вот таблица, суммирующая результаты с различных устройств:
Устройство | События, запущенные (в альбомную ориентацию) | ориентация | innerWidth | screen.width |
---|---|---|---|---|
iPad 2 | изменить размер, изменить ориентацию | 90 | 1024 | 768 |
iPhone 4 | изменить размер, изменить ориентацию | 90 | 480 | 320 |
Droid-телефон | изменение ориентации, изменение размера | 90 | 320 | 569 |
Samsung Galaxy Tablet | orientationchange, ориентацияchange, ориентацияchange, изменение размера, ориентацияchange | 90, 90, 90 | 400 | 683 |
Дополнительные соображения
Хотя этот подход обеспечивает надежный способ обнаружения вращения устройства, важно соблюдать имея в виду ограничения JavaScript в этом контексте. Например, некоторые значения, такие как screen.width, могут не всегда меняться должным образом. Также рекомендуется не полагаться исключительно на screen.width из-за его непоследовательного поведения на устройствах iOS.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3