Удалить историю браузера с помощью jQuery
У меня есть приложение ajax, основанное на jQuery. Я включил историю браузера, используя плагин истории jQuery. Но мы обнаруживаем, что приложение генерирует слишком много истории.
В частности, мы предоставляем встроенную кнопку "ajax-back", которая позволяет странице вернуться в предыдущее состояние ajax. Когда была нажата кнопка "ajax-back" на странице, мы хотим, чтобы она действовала подобно кнопке "Назад", перемещая текущий индекс истории или удаляя последнюю запись истории, вместо вставки новой записи истории.
Итак, я хотел бы спросить, возможно ли удалить последнюю запись браузера из JavaScript? или можно изменить текущий индекс списка истории браузера?
Примеры, основанные на плагине истории jQuery, будут очень благодарны.
2 ответа
Скорее всего, вы не можете легко сделать то, что вы пытаетесь. Существует window.location.replace, который переходит на новый URL и удаляет текущую страницу из истории, но это для полных переходов по страницам и почти наверняка нарушит способ фальсификации истории в jQuery.
Можно изменить, где вы находитесь в стеке истории, используя window.history.go(), который принимает целочисленное смещение в истории и перемещается к соответствующей записи. Он совсем не изменяет стек, он просто ставит вас на новое место. Также есть функции back() и forward(), которые просто вызывают с -1 и 1 соответственно. Это, вероятно, то, что вы ищете, хотя это не изменит стек, просто переместит вас в него.
В идеале вы должны найти плагин для jQuery, который не поддерживает историю, как jQuery.history, но предлагает абстракцию onhashchange, и ваша библиотека просто реагирует на изменения хеша. Таким образом, браузер отвечает за стек истории, и вы не столкнетесь с множеством сумасшедших проблем, с которыми сталкиваются библиотеки истории ajaxian.
История браузера, как правило, доступна очень ограниченным образом через javascript (для предотвращения отслеживания / доступа сайтов к этой информации). краткий ответ - насколько я знаю, то, что вы пытаетесь сделать, недоступно через jquery.