Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вопрос по window.history.replaceState не работает кнопка Назад (https://javascript.ru/forum/misc/27562-vopros-po-window-history-replacestate-ne-rabotaet-knopka-nazad.html)

vuler 17.04.2012 10:38

Вопрос по window.history.replaceState не работает кнопка Назад
 
При применении window.history.replaceState или pushState меняется адресная строка в браузере, но кнопка назад не хочет работать, хотя в документации написано, что pushState якобы меняет историю и можно будет гулять по url. Но что-то это не работает :-(

devote 17.04.2012 11:41

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

vuler 17.04.2012 12:23

Сейчас почитаю, но делаю все примерно так:
$(document).ready(function() {
//..много кода

$(document).on('click', '.pages_select', toggle_page);

function toggle_page()
{
//..много кода
window.history.pushState(null, null, "http://сайт.ru/index.php?page4");
$.ajax({ type: 'POST', url: '../module/firm_catalog_tasks.php',
	data: {firm_id:firm_id,page:page, task:"next_page"},
						   success: function(data)
						   {
						   comments_block.html(data);
						   //тут меняется часть содержимого страницы
						   }
			 });
}

//..много кода
})

vuler 17.04.2012 12:44

нужно вроде как-то использовать popstate с setTimeout-ом, но вот куда его не подкручиваю все равно не хочет пахать, может кто дополнить код, как это должно быть?

devote 17.04.2012 13:12

вы о чем? какие setTimeout'ы тут? событие popstate срабатывает тогда когда пользователь жмет в браузере кнопки назад/вперед. Не надо никаких таймаутов, просто вешайте событие и при его срабатывании подгружайте то что нужно.. По ссылке что я описал выше, есть пример того как это делается на jQuery. Причем описано на русском языке.

vuler 17.04.2012 16:51

Ну в общем никак с этой темой не разберусь :)
Вначале оказалось что фаер фокс тупил и не записывал в хистори урл с решетками. Хром - все записывал нормально. Поправил все это дело через %23.
Теперь уже тупит Хром. Фаер фокс всю историю сохраняет и событие popstate обрабатывает нормально, а хром начинает циклично обновлять старницу.
Вот обработчик события:
window.onpopstate = function(e) {
    window.location = location.href;
}

где-то про таймауты писали, тоже их не хочет понимать, в цикле производит обновления и все. в Фаер фоксе все гуд. Как можно это исправить?


Часовой пояс GMT +3, время: 04:16.