#Return刷新后同屏
#Return same screen after refresh
我正在开发一个使用 ajax 请求读取 JSON 文件的页面,我正在显示它
通过循环点击
但是当我刷新页面时 return 到第一个屏幕后 return 仍然是同一个屏幕
我刷新
请不要 JQUERY
这里我做了一个“框架”来维护你页面的状态。
AJAX 请求发生在 URL 中的哈希更改时(此处状态为“state1”:http://example.org/#state1
)。 hashchange
事件和函数 fetshdata()
.
有一个事件侦听器
单击“获取数据”按钮时,哈希值将发生变化,将发生 hashchange
事件并调用函数 fetshdata()
。
如果重新加载页面(这是您的问题),页面的“状态”将保留在哈希中(哈希仍在 URL 中)。为了欺骗 hashchange
事件,我“手动”创建了 hashchange 事件并将其发送到 window.
页面的状态也可以保存在 localStorage 中,但是 URL 中哈希的优点是哈希更改成为浏览器历史记录的一部分,您可以 save/send/link到URL等等
const data = 'data:application/json;base64,W3sidGl0bGUiOiJJdGVtIDEifSx7InRpdGxlIjoiSXRlbSAyIn0seyJ0aXRsZSI6Ikl0ZW0gMyJ9XQ==';
var content;
const fetchdata = hash => {
let url = hash; //use the hash as part of the AJAX request (not implemented)
fetch(data).then(res => res.json()).then(json => {
content.innerHTML = '';
json.forEach(item => {
content.innerHTML += `<p>${item.title}</p>`;
});
});
};
document.addEventListener('DOMContentLoaded', e => {
content = document.getElementById('content');
document.getElementById('btn_load').addEventListener('click', e => {
location.hash = 'newstate';
});
document.getElementById('btn_reload').addEventListener('click', e => {
location.reload();
});
if(location.hash){
let event = new Event('hashchange');
window.dispatchEvent(event);
}
});
window.addEventListener('hashchange', e => {
let hash = location.hash.substring(1);
fetchdata(hash);
});
<button id="btn_load">Get data</button>
<button id="btn_reload">Reload</button>
<div id="content"></div>
我正在开发一个使用 ajax 请求读取 JSON 文件的页面,我正在显示它 通过循环点击 但是当我刷新页面时 return 到第一个屏幕后 return 仍然是同一个屏幕 我刷新 请不要 JQUERY
这里我做了一个“框架”来维护你页面的状态。
AJAX 请求发生在 URL 中的哈希更改时(此处状态为“state1”:http://example.org/#state1
)。 hashchange
事件和函数 fetshdata()
.
单击“获取数据”按钮时,哈希值将发生变化,将发生 hashchange
事件并调用函数 fetshdata()
。
如果重新加载页面(这是您的问题),页面的“状态”将保留在哈希中(哈希仍在 URL 中)。为了欺骗 hashchange
事件,我“手动”创建了 hashchange 事件并将其发送到 window.
页面的状态也可以保存在 localStorage 中,但是 URL 中哈希的优点是哈希更改成为浏览器历史记录的一部分,您可以 save/send/link到URL等等
const data = 'data:application/json;base64,W3sidGl0bGUiOiJJdGVtIDEifSx7InRpdGxlIjoiSXRlbSAyIn0seyJ0aXRsZSI6Ikl0ZW0gMyJ9XQ==';
var content;
const fetchdata = hash => {
let url = hash; //use the hash as part of the AJAX request (not implemented)
fetch(data).then(res => res.json()).then(json => {
content.innerHTML = '';
json.forEach(item => {
content.innerHTML += `<p>${item.title}</p>`;
});
});
};
document.addEventListener('DOMContentLoaded', e => {
content = document.getElementById('content');
document.getElementById('btn_load').addEventListener('click', e => {
location.hash = 'newstate';
});
document.getElementById('btn_reload').addEventListener('click', e => {
location.reload();
});
if(location.hash){
let event = new Event('hashchange');
window.dispatchEvent(event);
}
});
window.addEventListener('hashchange', e => {
let hash = location.hash.substring(1);
fetchdata(hash);
});
<button id="btn_load">Get data</button>
<button id="btn_reload">Reload</button>
<div id="content"></div>