Это происходит только с Google Chrome и Safari. Это рассматриваемая страница:
http://jqeedu.tuxfamily.org/pmr/
После открытия лендинга нажмите post your apartment
, форма загружается через ajax, и страница автоматически прокручивается вниз, а если вы прокручиваете вверх, она снова возвращается на дно!
Что вызывает это?
Edit:
Извините за это, но я подождал несколько часов, а затем, когда это нужно было исправить, начал экспериментировать с ним, изменил несколько вещей и в конечном итоге решил проблему. Что я узнал во время этого процесса, это:
- У меня была нулевая ширина и высота
iframe
на странице, которая служила формой target
для загрузки, чтобы мы могли загружать фотографии без обновления страницы. Этот iframe
был последним элементом в body
. Когда я изменил свое положение на верхнее, прокрутка изменилась с настаивания на нижней позиции до настаивания на верхней позиции страницы. Теперь страница не позволит вам прокрутить страницу вниз!
- Это были хорошие новости, потому что теперь я знал, что бы это ни было, это было вызвано
iframe
. Атрибут src
для iframe
был установлен на #
; Я заподозрил это и изменил, указав на реальный файл (пустую рамку html), сделал файл и проблема исчезла!
Итак, мой анализ таков: браузер застревает на loading
файле в iframe
и процесс, отвечающий за loading
контента, остается запущенным. Этот процесс почему-то не позволяет нам прокручивать область, где iframe
выходит из viewport
. Это неправильное поведение движка webkit
, и браузеры, созданные с webkit
, демонстрируют эту проблему.
Наконец, ниже приведен фрагмент кода iframe
до и после изменения, а также содержимое нового целевого файла.
Багги:
<iframe id="control_target" name="control_target" src="#"
style="width:0;height:0;border:0px solid #fff;"></iframe>
Хорошо:
<iframe id="control_target" name="control_target" src="blank.html"
style="width:0;height:0;border:0px solid #fff;"></iframe>
blank.html:
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body> </body>
</html>
Наконец, я не люблю помечать свой собственный ответ как принятый, поэтому я помещаю это в текст вопроса, я жду, пока кто-нибудь еще немного объяснит природу этой проблемы или предоставит более качественный анализ. Если такой ответ предоставлен, я отмечу его как принятый ответ.