摘要:需求用戶每天第一次打開網(wǎng)頁時彈出一條廣告,并且可以選擇關(guān)閉默認(rèn)當(dāng)天不再彈出和近期不再彈出。實(shí)質(zhì)是這段代碼如果以周六為最后一天,這里就是用減獲取年和月的最后一秒就很簡單了。
需求:用戶每天第一次打開網(wǎng)頁時彈出一條廣告,并且可以選擇關(guān)閉(默認(rèn)當(dāng)天不再彈出)和近期不再彈出。如何從頭開始實(shí)現(xiàn)?
彈出框這里用alert代替了,可以用插件如https://v3.bootcss.com/javascript/#popovers、http://element-cn.eleme.io/#/zh-CN/component/dialog等實(shí)現(xiàn)。
Cookiedocument.cookie = "date="+new Date(); // 創(chuàng)建一條cookie,瀏覽器關(guān)閉后就清理 document.cookie = "user=mine;expires=" + new Date().setDate(time.getDate() + 7); // 再創(chuàng)建一條cookie,7天后會自動清理 console.log(document.cookie); // user=mine; date=Thu Dec 20 2018 15:26:45 GMT+0800 (中國標(biāo)準(zhǔn)時間) */
function setCookie(name, value, expires){ document.cookie = `${name}=${value};expires=${expires}`; } function getCookie(name){ let cookies = document.cookie.split("; "); let values = []; for(var i=0; i服務(wù)端設(shè)置方法
Http無狀態(tài)協(xié)議,只能在同一個網(wǎng)站(包括多個頁面)下獲取,存儲在客戶端本地的一段信息,幫助我們存儲信息獲取信息。但是同樣有風(fēng)險:我們自己在瀏覽器上可以操作或者設(shè)置Cookie。
const express = require("express") const cookieParser = require("cookie-parser") const app = express() app.use(cookieParser()) app.get("/", (req,res)=>{ res.send("歡迎" + req.cookies.username); // 如果有username cookie則顯示username,否則顯示undefined }) app.get("/login", (req,res)=>{ let username = req.query.username; res.cookie("username",username,{maxAge:99999, httpOnly:true}); // maxAge:cookie的有效期;httpOnly設(shè)置為true,可以防止XSS攻擊,只能被web serve訪問,不能通過document.cookie獲取 res.send("登錄成功"); }) app.listen(80);至此,需求的思路就可以實(shí)現(xiàn)// 選擇關(guān)閉(默認(rèn)當(dāng)天不再彈出) if(!getCookie("isAlert")){ alert("我是彈出層"); let now = new Date(); setCookie("isAlert", "不要彈出了", new Date(now.getFullYear(), now.getMonth(), now.getDate(), "23", "59", "59")); } // 選擇近期(7天)不再彈出 if(!getCookie("isAlert")){ alert("我是彈出層"); let now = new Date(); setCookie("isAlert", "不要彈出了", new Date(now.getFullYear(), now.getMonth(), now.getDate()+7, "23", "59", "59")); }cookie的學(xué)習(xí)同一網(wǎng)站共享一套cookie,它的數(shù)量和大小有限,有過期時間,JS中可以用document.cookie設(shè)置和訪問。
實(shí)現(xiàn)一個記住用戶名(30天)和密碼(7天)的需求
// html code// js code // setCookie getCookie removeCookie 前面以封裝 var user = document.getElementById("user"); var psd = document.getElementById("psd"); var clear = document.getElementById("clear"); form.onsubmit = function(){ var userTime = new Date(); userTime.setDate(userTime.getDate() + 30); var psdTime = new Date(); psdTime.setDate(psdTime.getDate() + 7); setCookie("user", user.value, userTime); setCookie("psd", psd.value, psdTime); } user.value = getCookie("user"); psd.value = getCookie("psd"); clear.onclick = function () { removeCookie("user"); removeCookie("psd"); user.value = ""; psd.value = ""; };
jquery-cookie https://cdn.bootcss.com/jquery-cookie/1.4.0/jquery.cookie.min.js
獲取:$.cookie("name"),不存在就返回undefined,不管你看到的是什么,它都是字符串
設(shè)置、修改:
$.cookie("name", "value") 有效期至當(dāng)前會話關(guān)閉
$.cookie("name", "value", {expires: 7, path: "/"}) 有效期7天,有效路徑是"/"
刪除:$.cookie("name", null); $.cookie("name", "", {expires: -1})
小技巧怎么獲取當(dāng)天最后一秒的時間戳
let now = new Date(); let resDate = new Date(now.getFullYear(), now.getMonth(), now.getDate(), "23", "59", "59").getTime();
怎么獲取N天后的此時
function N(N){ let now = new Date(); now.setDate(now.getDate() + N); return now; }
怎么獲取本周最后一秒
let now = new Date(); let day = now.getDay() || 7; /* 隱藏知識點(diǎn):星期天返回的是0,typeof(now.getDay()) == "number" ,0 == false。 實(shí)質(zhì)是這段代碼 day = now.getDay() === 0 ? 7 : now.getDay(); */ let weekLastDate = now.getDate()+(7-day); // 如果以周六為最后一天,這里就是用6減 let resWeek = new Date(now.getFullYear(), now.getMonth(), weekLastDate, "23", "59", "59");
獲取年和月的最后一秒就很簡單了。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/100411.html
摘要:手機(jī)推出新功能鄰里互撩讓溝通無障礙群組模式讓群聊嗨起來前往當(dāng)前時間戳當(dāng)前日期當(dāng)日凌晨的時間戳減去一毫秒是為了防止后續(xù)得到的時間不會達(dá)到的狀態(tài)當(dāng)日已經(jīng)過去的時間毫秒當(dāng)日剩余時間創(chuàng)建為想要取到的鍵值的鍵名 html: e手機(jī)App推出新功能 鄰里互撩,讓溝通無障礙! 群組模式,讓群聊嗨起來! 前往eApp js:$(function(){ f...
摘要:在彈一彈游戲中,小球不能向上發(fā)射。這里又有一個坑彈一彈游戲中,剛射擊出去的小球是不受重力影響的不然瞄準(zhǔn)還有什么意義。 前言 半年前用js和canvas仿了熱血傳奇網(wǎng)游(地址),基本功能寫完之后,剩下的都是堆數(shù)據(jù)、堆時間才能完成的任務(wù)了,沒什么新鮮感,因此進(jìn)度極慢。這次看到微信《彈一彈》比較火,因為涉及到物理引擎(為了真實(shí)),于是動手試了一下。一共用了10個小時,不僅完成了這個demo,...
摘要:前段時間重構(gòu)一個頁面,頁面中存在通過第三方代碼插入的動態(tài)廣告正常的產(chǎn)品需求,上線后發(fā)現(xiàn)第三方的廣告資源存在重復(fù)請求的問題。所以,同一個請求會觸發(fā)兩次的原因頁面加載時渲染元素會觸發(fā)第一次請求,執(zhí)行代碼導(dǎo)致重新渲染觸發(fā)第二次請求。 前段時間重構(gòu)一個頁面,頁面中存在通過第三方JavaScript代碼插入的動態(tài)廣告(正常的產(chǎn)品需求),上線后發(fā)現(xiàn)第三方的廣告資源存在重復(fù)請求的問題。由于控制廣告插...
摘要:前段時間重構(gòu)一個頁面,頁面中存在通過第三方代碼插入的動態(tài)廣告正常的產(chǎn)品需求,上線后發(fā)現(xiàn)第三方的廣告資源存在重復(fù)請求的問題。所以,同一個請求會觸發(fā)兩次的原因頁面加載時渲染元素會觸發(fā)第一次請求,執(zhí)行代碼導(dǎo)致重新渲染觸發(fā)第二次請求。 前段時間重構(gòu)一個頁面,頁面中存在通過第三方JavaScript代碼插入的動態(tài)廣告(正常的產(chǎn)品需求),上線后發(fā)現(xiàn)第三方的廣告資源存在重復(fù)請求的問題。由于控制廣告插...
閱讀 1930·2021-11-24 09:39
閱讀 2148·2021-09-22 15:50
閱讀 2037·2021-09-22 14:57
閱讀 714·2021-07-28 00:13
閱讀 1079·2019-08-30 15:54
閱讀 2372·2019-08-30 15:52
閱讀 2699·2019-08-30 13:07
閱讀 3798·2019-08-30 11:27