Я работаю над одной страницей без фреймворков. Легкая одиночная страница без использования фреймворков. Я использую хэш-систему с history.pushState, поэтому в зависимости от щелчка div я назначаю другой хеш. Например:Обновление страницы Chrome заставляет window.history.back()
var stateObj = { id: "file" };
$(document).on('click', "#foo", function() {
showTemplate(templates_main, data);
history.pushState(stateObj, "page 1", '#foo')
}),
$(document).on('click', "#faa", function() {
showTemplate(templates_main, data);
history.pushState(stateObj, "page 1", '#faa')
}),
Перед отправкой формы pushState будет иметь такое же поведение в обоих браузерах.
- URL-адрес страницы ==
index.html
- Нажмите #foo, URL ==
index.html#foo
- Нажмите #faa URL ==
index.html#faa
- Нажмите назад URL должен быть
index.html#foo
После подачи форма, новая страница создается с использованием perl. Если заданные параметры неверны, созданная страница будет содержать кнопку, которая запускает window.history.back()
, чтобы повторить попытку.
Это работает для Firefox, который также возвращает все данные imput при нажатии.
Проблема начинается с Chrome, так как после отправки формы и нажатия кнопки «Назад» я вижу, что Chrome переходит первым до index.html#foo
, а затем автоматически обновляет страницу, в результате чего URL == index.html.
Я знаю, что если вы хотите заставить Firefox вести себя как Chrome или IE, вы можете добавить onunload=""
в тело. Но есть ли что-то, что я могу добавить в тело или что-нибудь, что я могу сделать, чтобы заставить Chrome вести себя как Firefox и не перезагружать страницу?
- Почему Chrome это делает?
- Как я могу избежать обновления страницы? или
- Как изменить страницу в исходное состояние, когда было выполнено
history.back()
после перезагрузки страницы?
Что-то вроде:
onclick="window.location.href=document.history.length(-1)"
Спасибо,