Несколько вопросов о pushstate()
У меня есть несколько вопросов о history.pushstate()
:
- Например, у меня сейчас есть одностраничный сайт, и я использую
history.pushstate()
заставить кнопку назад / вперед работать. Нужно ли сначала позвонитьhistory.pushstate()
сохранить домашнюю страницу? - Когда я добавляю URL с
history.pushstate()
это покрывает мое имя файла index.php... как, оказываетсяlocalhost/scripts/index.php
вlocalhost/scripts/url
, Поскольку я работаю над localhost, я понятия не имею, как он будет выглядеть, если сайт будет работать. - Если я хочу, чтобы новый URL действительно индексировался поисковой системой, как мне изменить мой файл.htaccess? Каков общий процесс? Я действительно провел очень много исследований, включая маршрутизацию на стороне клиента, но мне очень трудно понять, потому что я все еще начинающий...
Я сделал небольшой тест: у меня есть форма и параграф с содержанием "Привет, мир!". После отправки формы появится hello world и форма исчезнет, и я успешно использовал
history.pushstate()
чтобы это работало. Проблема в том, что при первой же мысли я собирался сохранить все значения полей в объекте и заполнить форму при нажатии кнопки назад / вперед, но, похоже, мне не нужно этого делать, так какpushstate()
уже сделал это для меня... Почему это происходит? И когда я позвонилwindow.onpopstate
событие,e.state
возвращаетсяnull
... Это меня так смущает. Как видите, я прикрепил код ниже.Наконец, я делаю сайт опроса, где у меня есть две формы: 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);
}
});
Спасибо за помощь.