javascript - 后退按钮不适用于简单的 SPA 设置
问题描述
我为我的 Eleventy 网站设置了一个简单的 SPA:
(function () {
'use strict';
var $ = function (sel, con) {
return (con || document).querySelector(sel);
};
var nav = $('.nav');
if (!nav) {
console.warn('no navigation found.');
return;
}
nav.addEventListener('click', function (evt) {
var el = evt.target;
var spa = el.getAttribute('data-spa');
if (!!spa) {
evt.preventDefault();
var href = el.getAttribute('href');
var container = $(spa);
var xhr = new XMLHttpRequest();
xhr.onload = function () {
var d = this.responseXML;
var dTitle = d.title || '';
var dContainer = $(spa, d);
container.innerHTML = (dContainer && dContainer.innerHTML) || '';
history.pushState({}, dTitle, href);
};
xhr.open('GET', href);
xhr.responseType = 'document';
xhr.send();
}
});
})();
但是,当我在浏览器中单击后退按钮时,内容不会改变。任何人都知道我如何实现这一点?
干杯。
解决方案
推荐阅读
- html - 如何从reactjs输入字段中的输入类型日期更改日期格式?
- r - 如何通过唯一ID将R中一列中的某些行加在一起?
- user-interface - 使用新状态重建导航页面
- javascript - 如何使用 JavaScript 和 HTML Canvas 创建音频频谱?
- asp.net-core-webapi - 从 .NET Core Web API 返回错误消息
- php - Postfix 管理员、POSTFIX、PHP、MYSQL、UBUNTU 18.04
- excel - 对特定类别的标签进行网络抓取
- python - Azure - 具有 Oauth 重定向设置的自定义域
- python - 如何在不复制其他学生相同成绩的情况下打印随机成绩列表?
- javascript - 链接映射的 axios/API 调用