成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

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

funnyZhang / 1617人閱讀

摘要:需求用戶每天第一次打開網(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)。

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天后會自動清理
console.log(document.cookie); // user=mine; date=Thu Dec 20 2018 15:26:45 GMT+0800 (中國標(biāo)準(zhǔn)時間) */
自行封裝setCookie、getCookie、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無狀態(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

相關(guān)文章

  • 每天打開頁面,只一次提示框。

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

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

    摘要:在彈一彈游戲中,小球不能向上發(fā)射。這里又有一個坑彈一彈游戲中,剛射擊出去的小球是不受重力影響的不然瞄準(zhǔn)還有什么意義。 前言 半年前用js和canvas仿了熱血傳奇網(wǎng)游(地址),基本功能寫完之后,剩下的都是堆數(shù)據(jù)、堆時間才能完成的任務(wù)了,沒什么新鮮感,因此進(jìn)度極慢。這次看到微信《彈一彈》比較火,因為涉及到物理引擎(為了真實(shí)),于是動手試了一下。一共用了10個小時,不僅完成了這個demo,...

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

    摘要:前段時間重構(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ù)請求的問題。由于控制廣告插...

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

    摘要:前段時間重構(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ù)請求的問題。由于控制廣告插...

    hightopo 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<