Я пытаюсь выяснить, History.js
, следующий код работает, если вы перейдете на index.html
, но если вы попытаетесь напрямую получить доступ к index.html?info
, он отобразит содержимое индекса. Как именно вы должны обнаружить состояние, когда кто-то пытается напрямую получить доступ к index.html?info
? Кроме того, я не уверен, правильно ли я делаю начальное состояние.History.js - обнаружение состояния при прямом доступе?
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<title>title</title>
<script src="js/jquery-1.10.2.min.js"></script>
<script src="js/jquery.history.js"></script>
</head>
<body>
<div id="content"></div>
<script>
History.Adapter.bind(window, 'statechange', function() {
var id = History.getState().data.id;
if (id == "index") {
$('#content').html('<button id="btn" type="button">get info</button>');
$('#btn').click(function() {
History.pushState({ id: "info" }, '', '?info');
});
}
if (id == "info") {
$('#content').html('here is some info');
}
});
History.pushState({ id: "index" }, '', '?index'); //do this otherwise nothing loads on first run
</script>
</body>
</html>
Хорошо, это работает при прямом доступе к index.html? Info then. Но если вы обновите страницу, она будет пустой, даже если? Info находится в URL-адресе. Я чувствую, что что-то еще не так. – Roger
Да, ты прав. Он не работает при обновлении. Вы можете использовать pushState вместо замены и посмотреть, работает ли он. Хотя это будет зависать, если пользователь сразу же нажал кнопку «Назад». – tomca32
PushState, похоже, не имеет значения. – Roger