@VKiran

Обработка кнопок истории в бразуере?

Здравствуйте!
Пишу сайт и большая часть навигации через ajax, а вот открытие статей идет обычным методом. Так вот в частности в бразуере chrome, когда тыкаешь в истории стрелочку назад, он грузит все это управление сайтом, но со стартовой странцы, а пользователь уже натыкал кучу всего. А вот если бы он обновил ее то все было бы намано.
Мысли у меня такие, как то заставить браузер брать сайт не из памяти, а обновить его. Вот на удивление IE обновляет и у меня возобновляется нужная мне страница каталога.
Про history слышал, но как применить не соображу что то...
  • Вопрос задан
  • 2186 просмотров
Пригласить эксперта
Ответы на вопрос 1
BoShurik
@BoShurik
Symfony developer
https://github.com/browserstate/history.js
Я использую примерно так:
$(window).bind('statechange', function () {
	var State = History.getState();
	var url = State.url;
	var data = State.data;

	if (ajaxRequest) {
		ajaxRequest.abort();
	} else {
		$resultContainer.html('<div class="ajax-loader" style="position:relative;"><img src="http://i.imgur.com/6RMhx.gif" /></div>');
	}

	ajaxRequest = $.ajax({
		url: url,
		data: data,
		dataType: 'json',
		success: function (data, textStatus, jqXHR) {
			$resultContainer.html(data.content);

			if (data.form) {
				$filterForm.html(data.form);
				filterFormInitCallback();
			}

			ajaxRequest = null;
		},
		error: function (jqXHR, textStatus, errorThrown) {
			if ('abort' != textStatus) {
				document.location.href = url;
			}

			return false;
		}
	});
});

$filterForm.submit(function () {
	var query = $(this).formSerialize();
	// decodeURIComponent т.к. formSerialize выдает закодированный урл, а histoty.js пытается закодировать его еще раз
	History.pushState(null, document.title, '?' + window.decodeURIComponent(query));

	return false;
});
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы