2009-04-17 4 views
5

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

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

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

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

ответ

7

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

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

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

+1

+1. Навигация по Ersatz - кошмар юзабилити. Используйте реальные кнопки назад/вперед. – bobince

2

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

Смежные вопросы