| Dr2005alex |
|
|---|---|
#38063 Dayver: Упс, точно. Посмотрюс... Добавлено 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
This post was edited by Dr2005alex (2013-10-02 19:29, 12 years ago)
|