Удалить историю браузера с помощью jQuery - PullRequest
6 голосов
/ 17 апреля 2009

У меня есть приложение ajax, основанное на jQuery. Я включил историю браузера с помощью плагина jQuery history . Но мы обнаруживаем, что приложение генерирует слишком много истории.

В частности, мы предоставляем встроенную кнопку «ajax-back», которая позволяет странице вернуться в предыдущее состояние ajax. Когда была нажата кнопка «ajax-back» на странице, мы хотим, чтобы она действовала подобно кнопке «Назад», перемещая текущий индекс истории или удаляя последнюю запись истории, вместо вставки новой записи истории.

Итак, я хотел бы спросить: возможно ли удалить последнюю запись браузера из javascript? или можно ли изменить текущий индекс списка истории браузера?

Примеры, основанные на плагине истории jQuery, будут очень благодарны.

Ответы [ 2 ]

8 голосов
/ 18 апреля 2009

Скорее всего, вы не можете легко сделать то, что вы пытаетесь. Существует window.location.replace, который переходит на новый URL и удаляет текущую страницу из истории, но это для полных переходов по страницам и почти наверняка нарушит способ фальсификации истории в jQuery.

Можно изменить, где вы находитесь в стеке истории, используя window.history.go (), который принимает целочисленное смещение в истории и перемещается к соответствующей записи. Он вообще не изменяет стек, он просто ставит вас на новое место. Также есть функции back () и forward (), которые просто вызывают с -1 и 1 соответственно. Это, вероятно, то, что вы ищете, хотя это не изменит стек, просто переместит вас в него.

В идеале вы должны найти плагин для jQuery, который не поддерживает историю, как это делает jQuery.history, но вместо этого предлагает абстракцию onhashchange, и ваша библиотека просто реагирует на изменения хеша. Таким образом, браузер отвечает за стек истории, и вы не столкнетесь со многими безумными проблемами, с которыми сталкиваются библиотеки истории ajaxian.

3 голосов
/ 06 марта 2010

история браузера обычно доступна очень ограниченным образом через javascript (для предотвращения отслеживания / доступа сайтов к этой информации). краткий ответ - насколько я знаю, то, что вы пытаетесь сделать, недоступно вам через jquery.

...