Я работаю над мобильной версией моего сайта. Я использую как можно больше медиа-запросов и CSS, но я также использую некоторый javascript, чтобы, например, превратить мою навигацию в свернутый / развернутый список на небольших устройствах, чтобы сэкономить место.
Чтобы справиться со всем этим, я пытался использовать событие window.resize. Это позволяет магии происходить в настольных браузерах, пока они изменяются, но я получаю события изменения размера на iPad / iPhone, когда я их не ожидаю.
В настольных браузерах я получаю событие изменения размера, только если я на самом деле изменяю размер окна. В мобильных браузерах я получаю событие изменения размера, когда меняю ориентацию (ожидаемо), но я также получаю его, когда переключаюсь, чтобы что-то развернуть / свернуть.
Вот простой пример:
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<title>Resize test</title>
<style>
.box {height: 10000px; background: green; display: none;}
</style>
<script>
$(function(){
$(".opener").click(function(){
$(".box").slideToggle();
});
$(window).resize(function(){
alert("resized");
});
});
</script>
</head>
<body>
<a href="#" class="opener">Open/close me</a>
<div class="box"></div>
</body>
</html>
При нажатии на ссылку в браузере на рабочем столе оповещение отсутствует. Нажмите на ссылку на iPhone / iPad, вы получите предупреждение. В чем дело?