项目当中创建了很多超链接url指向的都是同一个查询的界面
但是每个超链接的onclick事件都写死了不同的参数
现在效果是 在点击超链接时 打开新页面 执行onclick事件 使用localstorage存储当前页面的参数 跳转到查询界面时进行读取
并且加上了定时器的运用 失效时间设置为2秒 失效后删除localstorage
需求是:怎么保证我从多个路口打开这个查询界面 保障localstorage在网页只能储存一个的情况下 执行不同参数对查询页面的重载
本人现在把定时器过期时间设置为2秒 确实可以实现这种效果 但是时效性不能保障,如果页面打开过慢或者 打开过快localstorage就会时效
如果您希望在多个路口打开查询界面时,保障 localStorage 在网页中只存储一个参数,并且能够执行不同参数对查询页面的重载,您可以考虑以下方案:
使用唯一的键名:在存储数据到 localStorage 时,使用一个唯一的键名,例如基于当前时间戳生成的键名,这样可以确保每次存储时使用不同的键名,避免覆盖之前的数据。例如:
javascript
Copy code
// 存储数据到 localStorage
const key = 'queryData_' + Date.now(); // 生成唯一键名
const queryData = { /* 根据超链接的参数生成数据 */ };
localStorage.setItem(key, JSON.stringify(queryData));
使用定时器清除 localStorage:在查询界面加载完毕后,可以设置一个定时器,在一定的时间间隔后清除 localStorage 中的数据,以避免数据过期。例如:
javascript
Copy code
// 查询界面加载完毕后,设置定时器清除 localStorage
window.onload = function() {
setTimeout(function() {
const key = /* 使用之前存储时的键名 */;
localStorage.removeItem(key); // 清除 localStorage 中的数据
}, 2000); // 设置定时器的延迟时间为 2 秒
}
保障页面打开的顺序:为了保障不同参数的查询页面能够正确地重载,您可以在页面加载时,先读取 localStorage 中的数据,并根据其中的参数进行初始化。例如:
javascript
Copy code
// 页面加载时,读取 localStorage 中的数据
window.onload = function() {
const key = /* 使用之前存储时的键名 */;
const queryData = JSON.parse(localStorage.getItem(key));
if (queryData) {
// 根据 localStorage 中的参数进行初始化
// ...
// 清除 localStorage 中的数据
localStorage.removeItem(key);
}
}
通过以上方案,您可以在多个路口打开查询界面时,保障 localStorage 中只存储一个参数,并且能够执行不同参数对查询页面的重载。定时器设置的时间间隔可以根据您的需求进行调整,以确保页面加载速度和定时器的有效性。
可以使用sessionStorage来代替localStorage来储存参数,每个浏览器会话都有一个独立的sessionStorage,在浏览器关闭后就会自动清除。在页面加载或者点击链接时向sessionStorage中写入参数,读取参数时,从sessionStorage中获取当前页面需要的参数。
思路:使用localStorage记录容器滚动条距离容器顶部的距离。容器可以是window,可以是html,可以是body,但是当你把html和body的滚动条,overflow: hidden;隐藏了以后,你是用的自己的div里面设计的滚动条,那么就将该div作为对象就好。
var tur=true;
$(function(){
//滚动时保存滚动位置
$(".manager_con").scroll(function(){
if(tur){
setTimeout(scro,500);
tur=false;
}
});
var offset = localStorage.getItem("offsetTop");
$(".manager_con").scrollTop(offset);
});
function scro() {
if($(".manager_con").scrollTop()!=0){
localStorage.setItem("offsetTop", $(".manager_con").scrollTop());
}
tur=true;
}
上面的代码,直接写在列表页就好,可放入一个公共的js中,然后在列表页直接引入就好。
上述代码里,那个.manager_con,我是在这个div里面设置的滚动条,我将html和body的滚动条隐藏了,可自行改变,只要将放滚动条的对象放里面就好。