Управление историей браузера

211
01 мая 2018, 00:55

По нажатии на кнопку вызывается функция:

showUser('folder/url.php')

Затем работает вот это:

 function showUser(str) {
  if (str=="") {
    document.getElementById("change").innerHTML="";
    return;
  } 
  if (window.XMLHttpRequest) {
    // code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
  } else { // code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
  xmlhttp.onreadystatechange=function() {
    if (this.readyState==4 && this.status==200) {
      document.getElementById("change").innerHTML=this.responseText;
    }
  }
  xmlhttp.open("GET",str,true);
  xmlhttp.send();
  history.pushState(location.href, "", str);
}

ОСОБОЕ ВНИМАНИЕ на строку:

history.pushState(location.href, "", str);

Я вроде как читаю текущий url и хочу его записать в историю. Затем, когда юзер кликнет в браузере "Назад", то его отправило на страницу, которая была изначальна в url. У меня это не получается, по нажатии "назад" url меняется на тот, что был раньше. А страница остаётся в условно новом состоянии.

И ещё, хотя навряд ли такое возможно, но если вдруг возможно, то как по нажатию на кнопку "назад" выполнялась бы моя какая нибудь функция?

Answer 1

Решение задачи найдено!

1 шаг: Слушаем событие "Нажатие кнопки Назад или Вперёд" браузера

addEventListener("popstate",function(e){
showUser(location.href);
},false);

2 шаг: При событии onclick вызовем showUser('folder/url.php?q=a')

3 шаг:

<?php 
if (isset( $_GET['q'])) {include("Возвратим здесь часть страницы");}
else {
include("Ну а если пользователь зашел на сайт прямо, то отобразим всю страницу");
}
?>
READ ALSO
Передача данных Node.js

Передача данных Node.js

Почему этот код не работает?

237
Управление объектом

Управление объектом

Нужно, чтобы с div, с id = ball, можно было взаимодействовать с помощью стрелок на клавиатуре

201
Скриптом не меняется картинка более чем 2 раза

Скриптом не меняется картинка более чем 2 раза

Делаю блок для выбора типа окна, и при клике должно меняться изображение, срабатывает только 2 раза

196
Как передать саму функцию в bind JavaScript

Как передать саму функцию в bind JavaScript

Всем привет! Как и все, кто волею судьбы и руководства изучает JavaScript, столкнулся с передачей параметров в addEventListenerПроблема легко решается...

185