Почему эта страница автоматически прокручивается вниз? - PullRequest
3 голосов
/ 08 июня 2010

Это происходит только с Google Chrome и Safari. Это рассматриваемая страница: http://jqeedu.tuxfamily.org/pmr/

После открытия лендинга нажмите post your apartment, форма загружается через ajax, и страница автоматически прокручивается вниз, а если вы прокручиваете вверх, она снова возвращается на дно!

Что вызывает это?

Edit:
Извините за это, но я подождал несколько часов, а затем, когда это нужно было исправить, начал экспериментировать с ним, изменил несколько вещей и в конечном итоге решил проблему. Что я узнал во время этого процесса, это:

  1. У меня была нулевая ширина и высота iframe на странице, которая служила формой target для загрузки, чтобы мы могли загружать фотографии без обновления страницы. Этот iframe был последним элементом в body. Когда я изменил свое положение на верхнее, прокрутка изменилась с настаивания на нижней позиции до настаивания на верхней позиции страницы. Теперь страница не позволит вам прокрутить страницу вниз!
  2. Это были хорошие новости, потому что теперь я знал, что бы это ни было, это было вызвано 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>

Наконец, я не люблю помечать свой собственный ответ как принятый, поэтому я помещаю это в текст вопроса, я жду, пока кто-нибудь еще немного объяснит природу этой проблемы или предоставит более качественный анализ. Если такой ответ предоставлен, я отмечу его как принятый ответ.

1 Ответ

3 голосов
/ 08 июня 2010

Прекрасно работает и в Safari 5. Возможно, элемент в нижней части вашей формы получает фокус, что приводит к прокрутке страницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...