Foren / National / Russian / Идеи / Доработка ajaxHelper

Dr2005alex
#38049 27. September 2013, 20:03

Выставляю на обсуждение небольшую доработку ajaxHelper

Так как ajaxHelper подставляет hash данные для ajax загрузки в адресную строку, он немного портит её вид. Она становится типа.

http://ваш сайт/#get-light_page;blog/cotonti/;

Все это ради сохранения истории браузера, НО.... ведь можно историю переписать так, как нам надо.

В общем мое предложение: Что бы ссылки были того же вида каки без ajax.

Тоесть не http://ваш сайт/#get-light_page;blog/cotonti/;

а http://ваш сайт/blog/cotonti/

Пример данной реализации уже работает на сайте http://dev.ob4aga.ru/

Предложение добавить в base.js перезапись истории с передачей данных для ajax

Изменим кусок кода из base.js

		$('body').on('click', 'a.ajax', function() {
            var make_hash = ajaxMakeHash($(this).attr('href').replace(/#.*$/, ''), $(this).attr('rel'));
			$.historyLoad(make_hash);
            //dr2005alex
            history.replaceState ({rel:make_hash}, '', $(this).attr('href').replace(/#.*$/, ''));
            /*------------------------*/
			return ajaxError;
		});

тут 

history.replaceState ({rel:make_hash}, '', $(this).attr('href').replace(/#.*$/, ''))

Записывает данные для ajax в переменную rel и заменяет адресс на оригинальный.

Далее нам надо отследить событие нажатие в браузере назад и вперед.

Добавляем обработчик после данного кода.

		window.addEventListener('popstate', function(e){
		 ajaxPageLoad(history.state.rel);
		}, false);

 

Теперь при переходе назад/вперед вызывается функция  

ajaxPageLoad с сохраненными в истории данными для ajax загрузки страницы.

Теперь мы имеем стандартые ссылки в адр. строке без хэша и работающий ajaxHelper как обычно.

P/S Чем вам не Вконтакте? ))) Можно теперь и плеер слушать во время прогулок по сайту....

WebKaa.ru - Cotonti Relax