Я смог легко использовать history.pushState, чтобы изменить содержимое моего div и заставить адресную строку отражать поддельный URL-адрес. Однако всякий раз, когда я нажимаю кнопки «назад/вперед», URL-адрес меняется обратно, но содержимое остается прежним. При вводе URL-адреса выдает ошибку. Кажется, у меня не работает первая часть API истории, но мне нужна помощь в изменении состояния.
Я довольно новый программист и пытаюсь создать свой веб-сайт на jQuery и сделать код как можно более кратким.
HTML-код:
<ul>
<li><button class="navButton" id="signUp" href="./content/registration.php" name="registration" title="Registration">Sign Up</button></li>
<li><button class="navButton" id="settings" href="./content/account_settings.php" name="settings" title="settings">Settings</button></li>
<li><button class="navButton" id="about" href="./content/about.php" name="about" title="About">About</button></li>
</ul>
<div id="mainContent"></div>
Javascript-код:
$(document).ready(function() {
// INITIAL CONTENT ON FIRST LOAD
$("#mainContent").load('./content/start.php');
// CODE FROM HISTORY.JS
(function(window, undefined) {
var History = window.History;
if (!History.enabled) {
return false;
}
History.Adapter.bind(window, 'statechange', function() {
var State = History.getState();
History.log(State.data, State.title, State.url);
});
// EVENT LISTENER FOR NAVBUTTON CLASS TO REPLACE CONTENT IN MAINCONTENT DIV
$('.navButton').click(function(e) {
e.preventDefault();
pageurl = $(this).attr('name');
$("#mainContent").fadeOut().load($(this).attr("href")).fadeIn();
if (pageurl != window.location) {
history.pushState('', $(this).attr('title'), $(this).attr('name'));
}
});
})(window);
});
Я установил history.js, но если мне не нужно его использовать, это было бы предпочтительнее. Я бы хотел, чтобы этот код был исправлен, чтобы кнопка «Назад» обновлялась, и это работало!