Несколько вопросов о pushstate()

У меня есть несколько вопросов о history.pushstate():

  1. Например, у меня сейчас есть одностраничный сайт, и я используюhistory.pushstate() заставить кнопку назад / вперед работать. Нужно ли сначала позвонить history.pushstate() сохранить домашнюю страницу?
  2. Когда я добавляю URL с history.pushstate() это покрывает мое имя файла index.php... как, оказывается localhost/scripts/index.php в localhost/scripts/url, Поскольку я работаю над localhost, я понятия не имею, как он будет выглядеть, если сайт будет работать.
  3. Если я хочу, чтобы новый URL действительно индексировался поисковой системой, как мне изменить мой файл.htaccess? Каков общий процесс? Я действительно провел очень много исследований, включая маршрутизацию на стороне клиента, но мне очень трудно понять, потому что я все еще начинающий...
  4. Я сделал небольшой тест: у меня есть форма и параграф с содержанием "Привет, мир!". После отправки формы появится hello world и форма исчезнет, ​​и я успешно использовал history.pushstate() чтобы это работало. Проблема в том, что при первой же мысли я собирался сохранить все значения полей в объекте и заполнить форму при нажатии кнопки назад / вперед, но, похоже, мне не нужно этого делать, так как pushstate() уже сделал это для меня... Почему это происходит? И когда я позвонил window.onpopstate событие, e.state возвращается null... Это меня так смущает. Как видите, я прикрепил код ниже.

  5. Наконец, я делаю сайт опроса, где у меня есть две формы: poll_create и user_vote. Поэтому я хочу создать функцию, в которой после того, как пользователь создает опрос, будет отправлен ajax-запрос и получен из базы данных с идентификатором опроса, а затем прикреплен идентификатор к URL-адресу. После этого я хочу сделать эту ссылку общедоступной. Таким образом, в этом вопросе я в основном собрал все вопросы вместе.

Javascript для вопроса 4:

var btn=document.querySelector('input[type=submit]');
var form=document.querySelector('#create_poll');
var para=document.querySelector('p');
form.addEventListener('submit',function(e){
    e.preventDefault();
    form.style.display="none";
    para.style.display="block";
    updateHistory();
    handleState();
},false);
/*
var Question=document.querySelector('#question').value;
var Answer=[];
[].forEach.call(document.querySelectorAll('.poll_option'),function(opt){
    Answer.push(opt.balue);
});*/
var updateHistory=function(){
    var dataToSave={
        //Q: Question,
        //A: Answer,
        title: "userForm",
        url:"userForm"
    };
    history.pushState(dataToSave,"userForm",dataToSave.url);
}

var handleState=(function(){
    window.onpopstate=function(e){
        if(!/userForm/.test(window.location.href)){
            alert('display form');
            para.style.display="none";
            form.style.display="block";
        }else{
            alert('display para');
            form.style.display="none";
            para.style.display="block";
        }
        //alert(e.state.title);
    }
});

Спасибо за помощь.

0 ответов

Другие вопросы по тегам