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

Dr2005alex
#38064 1. Oktober 2013, 03:31
#38063 Dayver:

глючит-глючит ... вот тыкнул тут по ссыле  http://dev.ob4aga.ru  крутанул до темы "Как заставить скрипт работать и после ajax загрузки страницы" тыкнул в нее .... почитал ... нажал Backspace страница подергалась в урле смотрим и видим вроде вернулись назад а тело все то же от пейджи а ведь должно было перегрузить до списка пейдже (хром, опра все последних версий)

Добавлено 8 минуты спустя:

тыканье в кнопку(стрелку)  назад в браузере тоже самое происходит ... блин а как красиво должно было получится ..... хотя вот о обратной совсемтимости наверное не думал? а ведь тех кто сиену юзает наверное уже немало .... или решение будет работать парально давая поддержку старому формату работы аякс истории через хеш в адесной строке?

Упс, точно.  Посмотрюс... 

Добавлено 2 дня спустя:

Потестил в свободное время, оказалось... что данный глук есть изначально в AjaxHelper. При возврате на страницу без хэша ничего не происходит.

Теперь у нас есть красивый вариант ajaxHelper. Тестируем на http://dev.ob4aga.ru/

Теперь страница обновляется и при возврате назад и вперед, даже если нету хэша.

Рабочий на данный момент код

        function supports_html5(e) {return !!e;}

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

		$( window ).bind( 'load', function( event ) {
			if(supports_html5(history.replaceState))history.replaceState ({main:true}, '', location.href);
			setTimeout( function(){
						$( window ).bind( 'popstate', function( event ) {

							if(supports_html5(history.state) && supports_html5(history.replaceState))
							{
								if(history.state !== null  && history.state.main)window.location = location;
								if(history.state !== null  && history.state.rel)ajaxPageLoad(history.state.rel);
								if(history.state === null )history.replaceState ({main:true}, '', location.href);
							}
						});
			},0);
		});

или решение будет работать парально давая поддержку старому формату работы аякс истории через хеш в адесной строке?

Данный вариант никак не изменяет работу ajaxHelper , а только маскирует его. Это означает что он работает в старом формате.

Скрипт просто изменяет адресс в адрессной строке на более логичный а хэш сохраняет в истории браузера. При кликанье вперед/ назад - скрипт берет данные хэша из истории браузера. Тем самым поддерживает работу ajaxHelper.

Единственное что я не тестировал, это работу с формами, т.к. нет никакого действующего примера использования ajaxHelper  в данной ситуации. 

WebKaa.ru - Cotonti Relax

Dieser Beitrag wurde von Dr2005alex (am 2. Oktober 2013, 19:29, vor 10 Jahre) bearbeitet