Я хотел бы, чтобы содержимое таблицы переместилось в ту же позицию, что и до обновления страницы, а не в верхней части содержимого таблицы. Другими словами, если пользователь прокручивается вниз, а кнопка запускает перезагрузку страницы, я хочу, чтобы содержимое таблицы возвращалось в ту же позицию после обновления.
CSS, используемый для моей таблицы
#invoice_incomplete {width:850px;height:400px;overflow:auto;}
Вы можете достичь этого, используя Javascript. При загрузке страницы вы можете написать [если таблица имеет полосу прокрутки]
document.getElementById("invoice_incomplete").scrollTop = 200px; // where you want scroll
или для всей страницы писать,
document.body.scrollTop = 200px; //
Как указывает Чинмайе, прокрутка программно довольно проста. Другая его часть – как записать положение прокрутки до перезагрузки.
Я бы попробовал обработчик выгрузки для записи cookie для записи текущей позиции прокрутки ( document.getElementById("invoice_incomplete").scrollTop
), но я предполагаю, что выгрузка слишком поздняя, и не всем браузерам удастся написать куки. Так что, вероятно, это лучше, чем раньше.
Так было бы примерно так:
window.onbeforeunload = function() { document.cookie = "invoiceScrollPos=" + (document.getElementById('invoice_incomplete').scrollTop) + ";path=/"; }
Затем после перезагрузки страницы прочитайте значение этого файла cookie и установите scrollTop
.
Один (возможно) нежелательный побочный эффект этого подхода заключается в том, что, если пользователь покидает эту страницу, затем возвращается к нему позже в том же сеансе браузера, положение прокрутки будет восстановлено до того, что было раньше. Чтобы решить эту проблему, вы можете добавить дату истечения срока действия в файл cookie, который, возможно, через 1 минуту после создания файла cookie.