摘要:需求用戶每天第一次打開(kāi)網(wǎng)頁(yè)時(shí)彈出一條廣告,并且可以選擇關(guān)閉默認(rèn)當(dāng)天不再?gòu)棾龊徒诓辉購(gòu)棾?。?shí)質(zhì)是這段代碼如果以周六為最后一天,這里就是用減獲取年和月的最后一秒就很簡(jiǎn)單了。
需求:用戶每天第一次打開(kāi)網(wǎng)頁(yè)時(shí)彈出一條廣告,并且可以選擇關(guān)閉(默認(rèn)當(dāng)天不再?gòu)棾觯┖徒诓辉購(gòu)棾?。如何從頭開(kāi)始實(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天后會(huì)自動(dòng)清理 console.log(document.cookie); // user=mine; date=Thu Dec 20 2018 15:26:45 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間) */
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無(wú)狀態(tài)協(xié)議,只能在同一個(gè)網(wǎng)站(包括多個(gè)頁(yè)面)下獲取,存儲(chǔ)在客戶端本地的一段信息,幫助我們存儲(chǔ)信息獲取信息。但是同樣有風(fēng)險(xiǎn):我們自己在瀏覽器上可以操作或者設(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訪問(wèn),不能通過(guò)document.cookie獲取 res.send("登錄成功"); }) app.listen(80);至此,需求的思路就可以實(shí)現(xiàn)// 選擇關(guān)閉(默認(rèn)當(dāng)天不再?gòu)棾觯?if(!getCookie("isAlert")){ alert("我是彈出層"); let now = new Date(); setCookie("isAlert", "不要彈出了", new Date(now.getFullYear(), now.getMonth(), now.getDate(), "23", "59", "59")); } // 選擇近期(7天)不再?gòu)棾?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ù)量和大小有限,有過(guò)期時(shí)間,JS中可以用document.cookie設(shè)置和訪問(wèn)。
實(shí)現(xiàn)一個(gè)記住用戶名(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
獲?。?b>$.cookie("name"),不存在就返回undefined,不管你看到的是什么,它都是字符串
設(shè)置、修改:
$.cookie("name", "value") 有效期至當(dāng)前會(huì)話關(guān)閉
$.cookie("name", "value", {expires: 7, path: "/"}) 有效期7天,有效路徑是"/"
刪除:$.cookie("name", null); $.cookie("name", "", {expires: -1})
小技巧怎么獲取當(dāng)天最后一秒的時(shí)間戳
let now = new Date(); let resDate = new Date(now.getFullYear(), now.getMonth(), now.getDate(), "23", "59", "59").getTime();
怎么獲取N天后的此時(shí)
function N(N){ let now = new Date(); now.setDate(now.getDate() + N); return now; }
怎么獲取本周最后一秒
let now = new Date(); let day = now.getDay() || 7; /* 隱藏知識(shí)點(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");
獲取年和月的最后一秒就很簡(jiǎn)單了。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/100411.html
摘要:手機(jī)推出新功能鄰里互撩讓溝通無(wú)障礙群組模式讓群聊嗨起來(lái)前往當(dāng)前時(shí)間戳當(dāng)前日期當(dāng)日凌晨的時(shí)間戳減去一毫秒是為了防止后續(xù)得到的時(shí)間不會(huì)達(dá)到的狀態(tài)當(dāng)日已經(jīng)過(guò)去的時(shí)間毫秒當(dāng)日剩余時(shí)間創(chuàng)建為想要取到的鍵值的鍵名 html: e手機(jī)App推出新功能 鄰里互撩,讓溝通無(wú)障礙! 群組模式,讓群聊嗨起來(lái)! 前往eApp js:$(function(){ f...
摘要:在彈一彈游戲中,小球不能向上發(fā)射。這里又有一個(gè)坑彈一彈游戲中,剛射擊出去的小球是不受重力影響的不然瞄準(zhǔn)還有什么意義。 前言 半年前用js和canvas仿了熱血傳奇網(wǎng)游(地址),基本功能寫(xiě)完之后,剩下的都是堆數(shù)據(jù)、堆時(shí)間才能完成的任務(wù)了,沒(méi)什么新鮮感,因此進(jìn)度極慢。這次看到微信《彈一彈》比較火,因?yàn)樯婕暗轿锢硪妫榱苏鎸?shí)),于是動(dòng)手試了一下。一共用了10個(gè)小時(shí),不僅完成了這個(gè)demo,...
摘要:前段時(shí)間重構(gòu)一個(gè)頁(yè)面,頁(yè)面中存在通過(guò)第三方代碼插入的動(dòng)態(tài)廣告正常的產(chǎn)品需求,上線后發(fā)現(xiàn)第三方的廣告資源存在重復(fù)請(qǐng)求的問(wèn)題。所以,同一個(gè)請(qǐng)求會(huì)觸發(fā)兩次的原因頁(yè)面加載時(shí)渲染元素會(huì)觸發(fā)第一次請(qǐng)求,執(zhí)行代碼導(dǎo)致重新渲染觸發(fā)第二次請(qǐng)求。 前段時(shí)間重構(gòu)一個(gè)頁(yè)面,頁(yè)面中存在通過(guò)第三方JavaScript代碼插入的動(dòng)態(tài)廣告(正常的產(chǎn)品需求),上線后發(fā)現(xiàn)第三方的廣告資源存在重復(fù)請(qǐng)求的問(wèn)題。由于控制廣告插...
摘要:前段時(shí)間重構(gòu)一個(gè)頁(yè)面,頁(yè)面中存在通過(guò)第三方代碼插入的動(dòng)態(tài)廣告正常的產(chǎn)品需求,上線后發(fā)現(xiàn)第三方的廣告資源存在重復(fù)請(qǐng)求的問(wèn)題。所以,同一個(gè)請(qǐng)求會(huì)觸發(fā)兩次的原因頁(yè)面加載時(shí)渲染元素會(huì)觸發(fā)第一次請(qǐng)求,執(zhí)行代碼導(dǎo)致重新渲染觸發(fā)第二次請(qǐng)求。 前段時(shí)間重構(gòu)一個(gè)頁(yè)面,頁(yè)面中存在通過(guò)第三方JavaScript代碼插入的動(dòng)態(tài)廣告(正常的產(chǎn)品需求),上線后發(fā)現(xiàn)第三方的廣告資源存在重復(fù)請(qǐng)求的問(wèn)題。由于控制廣告插...
閱讀 2084·2021-11-24 09:39
閱讀 2195·2021-09-22 15:50
閱讀 2153·2021-09-22 14:57
閱讀 774·2021-07-28 00:13
閱讀 1136·2019-08-30 15:54
閱讀 2418·2019-08-30 15:52
閱讀 2740·2019-08-30 13:07
閱讀 3908·2019-08-30 11:27