Измените URL строки поиска в приложении AJAX, чтобы соответствовать текущему состоянию

I' m написание приложения AJAX, но поскольку пользователь двигается через приложение, I' d как URL в строке поиска, чтобы обновить несмотря на отсутствие страницы перезагружает. В основном, I' d как для них, чтобы быть в состоянии отметить в любом пункте и таким образом возвратиться к текущему состоянию.

Как люди обращаются с УСПОКОИТЕЛЬНОСТЬЮ поддержания в приложениях AJAX?

Комментарии к вопросу (4)
Решение

Способ сделать это должно управлять 'location.hash', когда AJAX обновляет результат в государственном изменении это you' d нравится иметь осторожный URL. Например, если Ваш page' s URL:

Если функция стороны клиента выполнила этот код:

// AJAX code to display the "foo" state goes here.

location.hash = 'foo';

Затем URL, показанный в браузере, был бы обновлен к:

Это позволяет пользователям отмечать " foo" государство страницы и использование история браузера, чтобы провести между государствами.

С этим механизмом на месте, you' ll тогда должен разобрать часть мешанины URL на стороне клиента, используя JavaScript, чтобы создать и показать соответствующее начальное состояние, поскольку идентификаторы фрагмента (часть после #) не посылают в сервер.

Бен Alman' s hashchange плагин делает последнего бризом если you' ре используя jQuery.

Комментарии (7)

Взгляд на места как book.cakephp.org. Это место изменяет URL, не используя мешанину и использование AJAX. I' m не уверенный, как это делает это точно, но I' ve, пытаясь понять его. Если кто-либо знает, сообщить мне.

Также github.com, смотря на навигацию в рамках определенного проекта.

Комментарии (4)

Маловероятно, что писатель хочет перезагрузить или перенаправить его посетителя, используя Аякса. Но почему бы не использовать HTML5' s 'pushState'/'replaceState'?

You' ll быть в состоянии изменить addressbar так, как Вам нравится. [Получите естественно выглядящие URL с AJAX.] (https://www.w3.org/TR/2010/WD-html5-20100624/history.html#history)

Проверьте кодекс по моему последнему проекту: http://iesus.se/

Комментарии (0)

Это подобно тому, что сказал Кевин. Вы можете сделать, чтобы Ваш клиент заявил как некоторый объект JavaScript, и когда Вы хотите спасти государство, Вы преобразовываете в последовательную форму объект (использующий JSON и кодирование base64). Вы можете тогда установить фрагмент href к этой последовательности.

var encodedState = base64(json(state));
var newLocation = oldLocationWithoutFragment + "#" + encodedState;

document.location = newLocation; // adds new entry in browser history
document.location.replace(newLocation); // replaces current entry in browser history

Первый путь будет рассматривать новое государство как новое местоположение (таким образом, кнопка «Назад» возьмет их к предыдущему местоположению). Последний не делает.

Комментарии (2)

Если OP или другие все еще ищут способ сделать, изменяют историю браузера, чтобы позволить государство, используя pushState, и replaceState, как предложено IESUS, является ' right' способ сделать это теперь. It' s главное преимущество перед location.hash, кажется, что это создает фактические URL, не просто крошит. Если история браузера, используя мешанины сохранена, и затем пересмотрена с отключенным JavaScript, приложение won' t работа, так как мешанины - not' t посланный в сервер. Однако, если pushState использовался, весь маршрут пошлют в сервер, который Вы можете тогда построить, чтобы соответственно ответить на маршруты. Я видел пример, где те же шаблоны усов использовались и на сервере и на стороне клиента. Если бы клиенту активировали JavaScript, он получил бы мгновенные ответы, избежав поездки туда и обратно к серверу, но приложение будет работать превосходное без JavaScript. Таким образом приложение может изящно ухудшиться в отсутствие JavaScript.

Кроме того, я полагаю, что есть некоторая структура там с именем как history.js. Для браузеров, которые поддерживают HTML5, он использует pushState, но если браузер doesn' t поддержка, что, это автоматически отступает к использованию мешанин.

Комментарии (0)

SWFAddress работает во Вспышке & проекты JavaScript и позволяют Вам создать bookmarkable URL (использующий упомянутый выше метод мешанины), а также дающий Вам поддержка кнопки «Назад».

http://www.asual.com/swfaddress/

Комментарии (0)

window.location.hash метод - предпочтительный способ сделать вещи. Для объяснения того, как сделать это, [Аякс Копирует - Уникальные URL] (http://ajaxpatterns.org/Unique_URLs).

У YUI есть внедрение этого образца как модуль, который включает IE определенная работа arounds для получения кнопки «Назад», работающей наряду с переписыванием адреса, используя мешанину. [Менеджер по Истории Браузера YUI] (http://developer.yahoo.com/yui/history/).

У других структур есть подобные внедрения также. Важный момент - то, если Вы хотите, чтобы история работала наряду с переписыванием адреса, различным браузерам нужны различные способы обращаться с ним. (Это детализировано в первой статье ссылки.)

IE нужен iframe базирующееся хакерское проникновение, где Firefox напишет двойную историю, используя тот же метод.

Комментарии (0)

Проверьте, является ли пользователь ' in' страница, когда Вы нажимаете на бар URL, JavaScript, говорит, что Вы вне страницы. Если Вы изменяете бар URL и нажимаете ' ENTER' с символом ' #' в нем тогда Вы входите в страницу снова, без нажимают на страницу вручную с курсором мыши, затем keyboad команда событий (document.onkeypress) из JavaScript будет в состоянии проверить если it' s входят и активный JavaScript для переназначения. Вы можете проверить, находится ли пользователь НА странице с window.onfocus, и проверьте если he' s с window.onblur.

Да, it' s возможный.

;)

Комментарии (1)