说明:Cookie、localStorage、sessionStorage的区别是在数据存储大小、存储内容是否发送到服务器端、数据存储的有效期限、作用域这几个方面,这个弹窗前期使用Cookie完成过期识别存储功能,Window电脑上测试通过,后期Mac用户投诉弹窗今日不再提醒功能没有用(可能Cookie级别不同),故推翻Cookie,使用localStorage。
$(function(){
var _localStorage = window.localStorage;
if(!_localStorage){
return false;
}
getPopUp()
showQuestionnairePage()
})
// 弹窗页面
function showQuestionnairePage(){
// return;
let localData = window.localStorage.getItem("keyPopUp")
console.log(localData)
let localDataObj = JSON.parse(localData);
// 判断检测有localStorage
if(!localDataObj || localDataObj.versionNo == "Questionnaire"){
$.ajax({
// url: window.location.protocol+'//www.yuming.com/guide/dialog/questionnaire.html',
url: 'http://192.168.10.48/guide/dialog/questionnaire.html',
dataType: 'html',
success: function (htmlData) {
if($('.introjs-overlay:visible').length) $('.introjs-exitbutton').trigger('click');
$(".bg-upload").show();
$(".questionnaire").show();
$(".questionnaire_content").show();
$("body").append($(htmlData))
}
})
setPopUp('Questionnaire')
var exp = new Date().setTime(setTamp());
window.localStorage.setItem("keyPopUpto", JSON.stringify({time: exp}));
}
}
// 通过改变localStorage的value值来判断当天是否还要弹出
const setPopUp = (valuePopUP) => {
window.localStorage.setItem("keyPopUp", JSON.stringify({ versionNo: valuePopUP}));
};
// 对比时间,判断数据是否过期
const getPopUp = () => {
const localData = window.localStorage.getItem("keyPopUpto");
if(localData) {
const localDataObj = JSON.parse(localData);
const nowTime = new Date().getTime();
if (nowTime > localDataObj.time) {
console.log("数据已过期");
//删除
window.localStorage.removeItem("keyPopUp");
return false;
}
}
};
function setTamp() {
var curDate = new Date();
//当前时间戳
var curTamp = curDate.getTime();
//当日凌晨的时间戳,减去一毫秒是为了防止后续得到的时间不会达到00:00:00的状态
var curWeeHours = new Date(curDate.toLocaleDateString()).getTime() - 1;
//当日已经过去的时间(毫秒)
var passedTamp = curTamp - curWeeHours;
//当日剩余时间
var leftTamp = 24 * 60 * 60 * 1000 - passedTamp;
return leftTamp + curTamp;
}
水平有限,还不能写到尽善尽美,希望大家多多交流,跟春野一同进步!!!