Так, например: < /p>
- Если я нахожусь в состоянии 2 или более доступной, а затем нагрузку на кнопку «обратно» к кнопке «обратно» к кнопке < /em> на нагрузке. 2.
- Если я нахожусь в состоянии с доступной только 1 страницей, а затем нажмите кнопку «назад» в состояние на страница 2, она загрузит страницу 1.
: bloate>
: bloate>
. /> Обратите внимание, что если вы попытаетесь отобразить страницу, которая не существует, используя формат установления этого метода, DataTables не принесет ошибку, а скорее сбросит пейджин на первую страницу. Draw () , это приводит к проблеме, которую я описываю. Похоже, нет способа принудить DataTables в любом случае перейти на страницу, поэтому единственным вариантом было бы нарисовать дважды.
Вот (упрощенный) код:
setState = function() {
let state = history.state || {}, url = new URL(location.href.split("?")[0]);
// Get new state
state["table"] = {
"search": myTable.search(),
"order": getTableOrder(),
"page": myTable.page()+1,
"length": myTable.page.len(),
};
// Construct params
...
console.log("set: "+state["table"]["page"]);
// Replace/Push state
if (url.toString() == location.href) history.replaceState(state, ""); // Prevent duplication of history item
else history.pushState(state, "", url);
}
$(document).ready(function() {
myTable.on("draw", function() {
setState();
saveTableOrder(); // save to localStorage
saveTableLength(); // save to localStorage
});
$(window).on("popstate", function() {
console.log("pop: "+loadTablePage());
myTable
.search(loadTableSearch()) // load from history.state
.order(loadTableOrder()) // load from history.state or localStorage
.page.len(loadTableLength()) // load from history.state or localStorage
.page(loadTablePage()-1) // zero-indexed; load from history.state
.draw(false); // same result with "full-hold" argument
});
});
< /code>
В примере 1 это возвращает (как и ожидалось): < /p>
pop: 2
set: 2
< /code>
В примере 2 это возвращает (не как ожидалось): < /p>
pop: 2
set: 1
Подробнее здесь: https://stackoverflow.com/questions/794 ... h-popstate