首页 > 解决方案 > 在 javaScript 中使用 sessionStorage 存储数据

问题描述

我试图做的是将用户在网页上键入时的数据存储到会话存储中。这样如果用户刷新页面数据就会保留。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div>
        <p id = 'name' contenteditable="true">Riya Sharma</p>
        
    </div>
</body>
<script src="sessionstorage.js"></script>
</html>

这是js文件:

if(typeof Storage !== 'undefined'){
    const element = document.getElementById('name');

    element.addEventListener("keydown" , function(event){
        var text = document.getElementById('name').textContent;
        sessionStorage.setItem("store", text);
    });
    document.getElementById('name').textContent = sessionStorage.getItem('store');
}else {
    document.getElementById("name").innerHTML = "Sorry, your browser does not support Web Storage...";
}

问题是当我运行一个 HTML 文件时它没有显示任何内容(无法弄清楚为什么?)其次是当我输入内容并刷新页面时它没有显示最后一个字符(这很奇怪)

标签: javascripthtmlsession-storage

解决方案


如果下面的代码段显示Awaiting Script Result,那么您应该确保在您的浏览器中启用了 JavaScript。请注意,它会sessionStorage持续到页面(带有x)关闭,但会localStorage一直持续到浏览器清除其缓存。

document.querySelector('#support').innerText =
  'sessionStorage' in window ?
    'Supported' :
    'Not Supported'
<div id='support'>Awaiting Script Result</div>

附带说明是您的代码无法使用keydown,您应该使用keypress. keypress按下键后调用 ,这允许有时间将字母包含在<p></p>.


推荐阅读