亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

由一個(gè)需求(廣告每天彈一次)引發(fā)……

funnyZhang / 1667人閱讀

摘要:需求用戶每天第一次打開(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/#popovershttp://element-cn.eleme.io/#/zh-CN/component/dialog等實(shí)現(xiàn)。

Cookie
前端設(shè)置方法
document.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í)間) */
自行封裝setCookiegetCookie、removeCookie
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

相關(guān)文章

  • 每天打開(kāi)頁(yè)面,只一次提示框。

    摘要:手機(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...

    stackvoid 評(píng)論0 收藏0
  • js+canvas仿微信《彈一彈》小游戲

    摘要:在彈一彈游戲中,小球不能向上發(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,...

    Invoker 評(píng)論0 收藏0
  • 一次排查頁(yè)面重復(fù)請(qǐng)求的經(jīng)歷

    摘要:前段時(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)題。由于控制廣告插...

    notebin 評(píng)論0 收藏0
  • 一次排查頁(yè)面重復(fù)請(qǐng)求的經(jīng)歷

    摘要:前段時(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)題。由于控制廣告插...

    hightopo 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<