dimastik1986
@dimastik1986
учусь

Как получить значения history.pushState?

написано, что метод history.pushState(data,title,url) добавляет запись в стек истории сеанса.
Принимает три параметра:
  • data — данные записи в стеке истории. Эти данные могут использоваться в обработчике события popstate. Если никаких дополнительных данных передавать не требуется — указывается null;
  • title — заголовок страницы, можно указать null;
  • url — адрес страницы, может быть как относительным так и абсолютным.


я так понял, что передавать надо так {var: value}
а как их прочитать? поясните пожалуйста...
обработчик события popstate
window.addEventListener("popstate", function(e) {
    getContent(location.pathname, false);
});

  • Вопрос задан
  • 549 просмотров
Решения вопроса 1
@DanKud
document.addEventListener('click', () => {
  var state = { 'page_id': 1, 'user_id': 5 };
  history.pushState(state, null, location.pathname)
})

window.addEventListener('popstate', e => { /* событие срабатывает при нажатии кнопок "назад" и "вперед" в браузере */
  console.log(e.state); /* в методе state будет объект state = { 'page_id': 1, 'user_id': 5 } */
})
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Комментировать
@DiaTMss
(function()
{
	var tabMenu = document.getElementById('tabMenu');

	for(var tM = 0; tM < tabMenu.children.length; tM++)
	{
		tabMenu.children[tM].children[0].onclick = function()
		{
			history.pushState(null, null, this.href);

			ajax('POST', '/app/controllers/route.php', 'controller=' + location.pathname);

			return false;
		}
	}

	function ajax(method, puth, param)
	{
		var xhr = new XMLHttpRequest();

		xhr.open(method, puth, true);
		xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
		xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');

		xhr.onreadystatechange = function()
		{
			if(xhr.readyState === 4)
			{
				if(xhr.status === 200)
				{
					var fh5comain = document.getElementById('fh5co-main');

					fh5comain.innerHTML = xhr.responseText;
				}
			}
		}

		xhr.send(param);
	}

	window.onpopstate = function()
	{
		ajax('POST', '/app/controllers/route.php', 'controller=' + location.pathname);
	}
	
}());
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
23 нояб. 2024, в 01:31
1000 руб./за проект
23 нояб. 2024, в 00:16
2000 руб./за проект
22 нояб. 2024, в 23:55
3000 руб./за проект