Home >> Blog >> 如何以及何時使用 JavaScript 應用會話存儲 sessionstorage

如何以及何時使用 JavaScript 應用會話存儲

在瀏覽器上存儲數據時,會話存儲是一種流行的選擇。它使開發人員能夠保存和檢索不同的值。與本地存儲不同,會話存儲僅保留特定會話的數據。一旦用戶關閉瀏覽器窗口,數據就會被清除。

介紹

會話存儲是 cookie 的完美替代品。它的語法非常簡單。初學者可以輕鬆學習和實現這種存儲。會話存儲還可以容納大量數據。大多數瀏覽器,包括 Chrome 和 Firefox,可以在會話存儲中存儲大約 10 MB 的數據。

先決條件

要繼續學習,您必須對 HTML 和 JavaScript 有一些基本的了解。您還應該在計算機上安裝瀏覽器。

目標

演示如何在會話存儲中存儲、檢索、刪除和清除項目。

第 1 步 - 創建項目

首先,在桌面上創建一個新文件夾。在此文件夾中,創建index.html和main.js文件。然後,您可以在 Visual Studio Code 或您的首選編輯器中打開這些文件。

我們所有與對象相關的 JavaScript 函數sessionStorage都將在main.js文件中。然後我們將把這個文件導入到index.html.

第 2 步 - 了解會話存儲功能

在開始之前,了解會話存儲支持的不同方法很重要。你會發現 session storage 和 localStorage 有類似的方法。

它們是:setItem()、getItem()、removeItem()和clear()。

設置項()

調用此方法將值存儲在會話存儲中。此方法將鍵和值作為參數。

sessionStorage.setItem("name:, "John Smith");;

在上面的函數中,name是鍵,John Smith而是值。

獲取項目()

此函數用於從會話存儲中檢索值。它接受key作為參數。使用上面的例子,關鍵是name.

var user = sessionStorage.getItem("name");

除去項目()

此方法還需要 akey作為參數。然後該方法將從會話存儲中刪除指定的項目。

sessionStorage.remove("name");

調用時,上述語句John Smith將從會話存儲中刪除。

清除()

顧名思義,此函數從會話存儲中刪除所有項目。此方法不需要任何參數。

sessionStorage.clear();

讓我們在現實生活中的應用程序中實現會話存儲。

第 3 步 - 創建視圖

在這一步中,我們將設計一個簡單的網頁,用於與會話存儲功能進行交互。該頁面是使用 HTML5 設計的。該main.js文件必須在index.html文件中導入。

這使我們能夠訪問所需的會話存儲功能。請注意,我們將使用 Bootstrap 來設置網頁樣式。這是引導鏈接。

< link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous" >

main.js我們使用下面的代碼片段導入文件。

< script type="text/javascript" src="main.js">< /script>

確保我們所有的按鈕都有一個id. main.js這是因為我們將在文件中處理他們的點擊事件。

< !DOCTYPE html>
< html>

< head>
< meta charset="utf-8"> < meta name="viewport" content="width=device-width">
< title>sessionStorage< /title>
< script type="text/javascript" src="main.js">< /script>
< link rel=" stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
< /head>

< body>
< div class="container" id="formDiv">
< form class="form-signin" id="carForm">
< h1>Enter details< /h1>
< label for="carBrand" class="sr-only">Car< /label>
< input type="text" id="carBrand" class="form-control" placeholder="Car brand" required autofocus>< br>
< label for="carPrice" class="sr-only">Price< /label>
< input type="text" id="carPrice" class="form-control" placeholder="Price" required>< br>
< button class="btn btn-lg btn-primary btn-block" type="submit">Submit< /button>
< /form>

< button class="btn btn-lg btn-primary btn-block" id="retrieveButton">Retrieve records < /button>
< div id="retrieve">< /div>

< button class="btn btn-lg btn-danger btn-block" id="removeButton">Remove record< /button>
< button class="btn btn-lg btn-danger btn-block" id="clearButton">Clear all records< /button>
< /div> < /body> < /html>

上面的網頁有四個按鈕,ids分別是removeButton、clearButton、retrieveButton和submit。

removeButton– 單擊時,此按鈕將調用文件removeItem中的函數main.js。

clearButton– 此按鈕調用clearStorage方法。

submit– 將值存儲或保存在sessionStorage.

clearButton– 刪除 中的所有項目sessionStorage。

所有這些函數都在main.js文件中定義。

將store()接受用戶輸入並將值setItem()作為參數傳遞給方法。結果,這些值或對象將存儲在會話存儲中。該store()方法的代碼包含在下面。

function store(){ //stores items in sessionStorage
var brand = document.getElementById('carBrand').value;
var price = document.getElementById('carPrice').value;

const car = {
brand: brand,
price: price,
}

window .sessionStorage. setItem( 'car',JSON.stringify(car));
//converting object to string
}

還main.js具有retrieveRecords()獲取. sessionStorage該功能概述如下。如前所述,這getItem()需要一個鍵來檢索特定的對像或值。

function retrieveRecords(){ //retrieves items in sessionStorage
console.log("retrive records");
var records = window.sessionStorage.getItem('car');
var paragraph = document.createElement("p");
var infor = document.createTextNode(records);
paragraph.append Child(infor);
var element = document.getElementById("retrieve");
element.appendChild(paragraph);
}

就像 一樣getItem(),該removeItem()方法需要一個密鑰。在此示例中,鍵是car.

function removeItem(){//deletes item from sessionStorage
sessionStorage.removeItem('car');
console.log("remove items");
}

clearStorage 函數在調用時將刪除會話存儲中的所有項目。

這是所需的代碼片段:

function clearStorage(){ //clears the entire sessionStorage
sessionStorage.clear();
console.log("clear records");
}

這是 main.js 文件中的完整代碼:


function store() { //stores items in the sessionStorage
var brand = document.getElementById('carBrand').value;
var price = document.getElementById('carPrice').value;

const car = {
brand: brand,
price: price,
}

window.sessionStorage.setItem('car',JSON.stringify(car));
//converting object to string
}

function retrieveRecords() { //retrieves items in the sessionStorage
console.log("retrive records");
var records = window.sessionStorage.getItem('car');
var paragraph = document.createElement("p");
var infor = document.createTextNode(records);
paragraph.appendChild(infor);
var element = document.getElementById("retrieve");
element.appendChild(paragraph);
}

function removeItem() {//deletes item from sessionStorage
sessionStorage.removeItem('car');
console.log("remove items");
}

function clearStorage() { //clears the entire sessionStorage
sessionStorage.clear();
console.log("clear records");
}

window.onload =function() { //ensures the page is loaded before functions are executed.
document.getElementById("carForm").onsubmit = store;
document.getElementById("clearButton").onclick = clearStorage;
document.getElementById("removeButton").onclick = removeItem;
document.getElementById("retrieveButton").onclick = retrieveRecords;
}

您可以按照以下代碼將列表存儲在會話存儲中:

function store() { //stores items in the local storage
var brand = document.getElementById('carBrand').value; //retrieves value
var price = document.getElementById('carPrice').value; //retrieve value

const car = {brand: brand,price: price}

var vehicles = [car]; // adding an object to list
window. sessionStorage. setItem('car',JSON.stringify(vehicles));
//converting the list to string. SessionStorage only stores values in Strings
}

結果

請注意,已存儲在會話存儲中的項目是car本教程中使用的對象。您可以按照下面的視頻來測試網頁。

何時使用會話存儲

會話存儲可用於檢查用戶的身份驗證狀態。登錄的用戶可以被重定向到主頁。另一方面,未註冊用戶被引導到身份驗證頁面。

會話存儲還有助於防止某些操作。例如,它有助於禁止某些用戶進行某些購買。開發人員還可以使用會話存儲來提高數據安全性。一旦用戶關閉瀏覽器選項卡,他們的所有數據都會被清除。這使得第三方很難獲得訪問權限。

結論

至此,您應該對會話存儲有了更好的了解。您應該考慮使用會話存儲來替代 cookie。因為它可以為開發人員提供極大的靈活性。

sessionstorage

sessionstorage

session storage

getitem

storage

noopener

the

html

en-us

the user

localstorage setitem

sessionstorage name

noopener

spec

event

event

因此

因此

mdn

follow