国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

funnyZhang / 1612人閱讀

摘要:需求用戶每天第一次打開網頁時彈出一條廣告,并且可以選擇關閉默認當天不再彈出和近期不再彈出。實質是這段代碼如果以周六為最后一天,這里就是用減獲取年和月的最后一秒就很簡單了。

需求:用戶每天第一次打開網頁時彈出一條廣告,并且可以選擇關閉(默認當天不再彈出)和近期不再彈出。如何從頭開始實現?

彈出框

這里用alert代替了,可以用插件如https://v3.bootcss.com/javascript/#popovershttp://element-cn.eleme.io/#/zh-CN/component/dialog等實現。

Cookie
前端設置方法
document.cookie = "date="+new Date(); // 創建一條cookie,瀏覽器關閉后就清理
document.cookie = "user=mine;expires=" + new Date().setDate(time.getDate() + 7); // 再創建一條cookie,7天后會自動清理
console.log(document.cookie); // user=mine; date=Thu Dec 20 2018 15:26:45 GMT+0800 (中國標準時間) */
自行封裝setCookiegetCookieremoveCookie
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
服務端設置方法

Http無狀態協議,只能在同一個網站(包括多個頁面)下獲取,存儲在客戶端本地的一段信息,幫助我們存儲信息獲取信息。但是同樣有風險:我們自己在瀏覽器上可以操作或者設置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設置為true,可以防止XSS攻擊,只能被web serve訪問,不能通過document.cookie獲取
    res.send("登錄成功");
})

app.listen(80);
至此,需求的思路就可以實現
// 選擇關閉(默認當天不再彈出)
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的學習

同一網站共享一套cookie,它的數量和大小有限,有過期時間,JS中可以用document.cookie設置和訪問。

實現一個記住用戶名(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,不管你看到的是什么,它都是字符串

設置、修改:

$.cookie("name", "value") 有效期至當前會話關閉

$.cookie("name", "value", {expires: 7, path: "/"}) 有效期7天,有效路徑是"/"

刪除:$.cookie("name", null); $.cookie("name", "", {expires: -1})

小技巧

怎么獲取當天最后一秒的時間戳

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;
/* 
    隱藏知識點:星期天返回的是0,typeof(now.getDay()) == "number" ,0 == false。
    實質是這段代碼 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");

獲取年和月的最后一秒就很簡單了。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/100411.html

相關文章

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

    摘要:手機推出新功能鄰里互撩讓溝通無障礙群組模式讓群聊嗨起來前往當前時間戳當前日期當日凌晨的時間戳減去一毫秒是為了防止后續得到的時間不會達到的狀態當日已經過去的時間毫秒當日剩余時間創建為想要取到的鍵值的鍵名 html: e手機App推出新功能 鄰里互撩,讓溝通無障礙! 群組模式,讓群聊嗨起來! 前往eApp js:$(function(){ f...

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

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

    Invoker 評論0 收藏0
  • 一次排查頁面重復請求的經歷

    摘要:前段時間重構一個頁面,頁面中存在通過第三方代碼插入的動態廣告正常的產品需求,上線后發現第三方的廣告資源存在重復請求的問題。所以,同一個請求會觸發兩次的原因頁面加載時渲染元素會觸發第一次請求,執行代碼導致重新渲染觸發第二次請求。 前段時間重構一個頁面,頁面中存在通過第三方JavaScript代碼插入的動態廣告(正常的產品需求),上線后發現第三方的廣告資源存在重復請求的問題。由于控制廣告插...

    notebin 評論0 收藏0
  • 一次排查頁面重復請求的經歷

    摘要:前段時間重構一個頁面,頁面中存在通過第三方代碼插入的動態廣告正常的產品需求,上線后發現第三方的廣告資源存在重復請求的問題。所以,同一個請求會觸發兩次的原因頁面加載時渲染元素會觸發第一次請求,執行代碼導致重新渲染觸發第二次請求。 前段時間重構一個頁面,頁面中存在通過第三方JavaScript代碼插入的動態廣告(正常的產品需求),上線后發現第三方的廣告資源存在重復請求的問題。由于控制廣告插...

    hightopo 評論0 收藏0

發表評論

0條評論

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