Условие выглядит следующим образом:
- Использование iPad Safari
- Страница находится в режиме RTL (справа налево) (арабский язык)
- Страница динамически загружает контент, который шире экрана
- Появляется странное поведение прокрутки
Страница запускается, по-видимому, прокручивается слишком далеко влево (см. скриншот), поэтому правая часть (как правило, левая в режиме LTR) направлена к середине, и вместо этого отображается отрицательное пространство.
Вы можете перетащить вправо, чтобы прокрутить влево, чтобы увидеть какое-то содержимое, которое начинается за кадром, но я могу прокручивать только часть, которая оставляет некоторый контент вдалеке слева, что невозможно.
Вот скриншот из дефекта, над которым я работаю:
Вот простой HTML, который мог бы воспроизвести проблему:
<!DOCTYPE html>
<html dir="rtl">
<head>
<meta name="viewport" content="minimum-scale=0.25, maximum-scale=4.0, user-scalable=yes" />
</head>
<body style="background-color:grey">
<script src="http://code.jquery.com/jquery.js"></script>
<script>
setTimeout(function(){
$('<div style="width:2000px;background-color:red">test</div>').appendTo('body');
},1000);
</script>
</body>
</html>
Действия, которые вы можете выполнить, чтобы воспроизвести проблему:
- Скопируйте этот HTML-код в локальный файл
- Откройте документ в Chrome, используя F12, вы можете включить эмуляцию iPad.
Нажмите кнопку для эмуляции - тогда вы заметите, что правый край красной рамки находится около середины страницы. Однако этого не должно быть. Этот красный ящик должен быть единственным контентом, и ничто не находится справа от него, поэтому оно должно совпадать с правым краем.
Эта проблема также возникает, когда вы динамически вставляете широкий контент после загрузки страницы, поэтому, если страница начинается с широкого содержимого, поведение прокрутки кажется нормальным. Следовательно, setTimeout() в коде.
Любые советы/способы решения проблемы?
EDIT: Вы также можете попробовать эту ссылку, чтобы воспроизвести проблему: http://www.codefactor.net/ipadissue.html