Я передаю некоторые данные в свою базу данных, а затем перезагрузив ту же страницу, что и пользователь, я задавался вопросом, есть ли способ запомнить позицию прокрутки, на которой был только что пользователь?
Я понял, что я пропустил важную часть отправки, поэтому я решил настроить код для хранения файла cookie в событии клика вместо первоначального способа его хранения во время прокрутки.
Вот способ jquery:
jsfiddle (просто добавьте /show
в конце URL- адреса, если вы хотите просмотреть его за пределами фреймов)
Очень важно, что вам понадобится плагин jquery cookie .
JQuery:
// When document is ready... $(document).ready(function() { // If cookie is set, scroll to the position saved in the cookie. if ( $.cookie("scroll") !== null ) { $(document).scrollTop( $.cookie("scroll") ); } // When a button is clicked... $('#submit').on("click", function() { // Set a cookie that holds the scroll position. $.cookie("scroll", $(document).scrollTop() ); }); });
Вот еще код из исходного ответа:
jsfiddle
JQuery:
// When document is ready... $(document).ready(function() { // If cookie is set, scroll to the position saved in the cookie. if ( $.cookie("scroll") !== null ) { $(document).scrollTop( $.cookie("scroll") ); } // When scrolling happens.... $(window).on("scroll", function() { // Set a cookie that holds the scroll position. $.cookie("scroll", $(document).scrollTop() ); }); });
@ Ответ Коди напомнил мне что-то важное.
Я только сделал это, чтобы проверить и прокрутить до положения по вертикали .
(1) Решение 1:
Во-первых, получите ссылку прокрутки по JavaScript при нажатии кнопки отправки.
Во-вторых, укажите это значение позиции прокрутки в данных, представленных на страницу PHP.
В-третьих, PHP-код должен записать это значение в сгенерированный HTML как переменную JS:
<script> var Scroll_Pos = <?php echo $Scroll_Pos; ?>; </script>
В-четвертых, используйте JS для перехода к позиции, указанной переменной JS 'Scroll_Pos'
(2) Решение 2:
Сохраните позицию в файле cookie, затем используйте JS для перехода к сохраненной позиции при перезагрузке страницы.
Сохраните позицию в скрытом поле.
<form id="myform"> <!--Bunch of inputs--> </form>
чем с jQuery хранить scrollTop и scrollLeft
$("form#myform").submit(function(){ $(this).append("<input type='hidden' name='scrollTop' value='"+$(document).scrollTop()+"'>"); $(this).append("<input type='hidden' name='scrollLeft' value='"+$(document).scrollLeft()+"'>"); });
Затем при следующей перезагрузке выполните перенаправление или распечатайте их с помощью PHP
$(document).ready(function(){ <?php if(isset($_REQUEST["scrollTop"]) && isset($_REQUEST["scrollLeft"])) echo "window.scrollTo(".$_REQUEST["scrollTop"].",".$_REQUEST["scrollLeft"].")"; ?> });
Ну, если вы используете _targets в своем коде, вы можете сохранить это.
Или вы можете сделать запрос ajax, чтобы получить window.height.
document.body.offsetHeight;
Затем отбросьте их, дайте переменной javascript и переместите страницу для них.