основной вопрос
Существует ли способ javascript, позволяющий определить, обращаемся ли мы к странице в первый раз или это является причиной возврата?
Моя проблема
Я реализую html5-навигацию на моей веб-странице, управляемой ajax.
В основном скрипте я инициализирую переменную с некоторыми значениями.
<script>
var awnsers=[];
process(awnsers);
<script>
Process (awnsers) обновит представление в соответствии с заданными awnsers, используя ajax.
В функции, которая вызывает ajax и заменяет представление, я сохраняю историю
history.pushState(state, "", "");
Я также определил popstate, где я восстанавливаю вид в соответствии со спиной.Кроме того, я изменяю глобальную переменную awnsers для старого значения.
function popState(event) {
if (event.state) {
state = event.state;
awnsers=state.awnsers;
updateView(state.view);
}
}
Навигация (туда и обратно) идет по существу, за исключением случаев, когда я перехожу на внешнюю страницу и нажимаю назад (снова поступая на мою страницу).Когда мы обращаемся к странице, сначала вызывается основной скрипт, обновляются корректные awnsers и запускается ajax.Между тем, событие состояния pop вызывается и обновляет представление.После этого основной ajax заканчивается и обновляет представление в соответствии с пустыми значениями.
Поэтому мне нужен код:
<script>
var awnsers=[];
process(awnsers);
<script>
вызывается только тогда, когда пользователь заходит на страницу, но НЕ когда онаэто спина.Есть ли способ сделать это?
Спасибо!
Возможное решение После первого сообщения я подумал о возможном решении.Проверено и работает, кто бы ни был, я не знаю, есть ли какое-нибудь более чистое решение.Я добавляю изменения, которые я сделал.
Сначала я добавляю:
$(function() {
justLoaded=true;
});
, затем я изменяю функцию popState, чтобы отвечать за инициализацию переменных
function popState(event) {
if (event.state) {
state = event.state;
awnsers=state.awnsers;
updateView(state.view);
} else if(justLoaded){
awnsers=[];
process(awnsers);
}
justLoaded=false;
}
Вот и все.