如何使用 Javascript 将 cookie 存储在本地存储中?

2024-01-11

我有一个适用于 Android(希望以后还有 iPhone)的应用程序,它基于 Javascript,并使用 Phonegap/Applaud 制作成应用程序。

不幸的是,设置和获取 cookie 在 Android 上不起作用,这可能是 Android 环境特有的。有人建议我使用“本地存储”可能更可靠。

然而,直到今天早上我对本地存储一无所知,所以我正在努力熟悉。据我所知,它基本上只是用不同语法保存数据的另一个地方。就我的情况而言,除了 Android 强迫我使用它之外,我认为它没有给我带来任何优于 cookie 的优势。因此,我希望我仍然可以利用现有的代码来设置和获取 cookie,而不必采用全新的方法。

当然,我可以在我的 Javascript 中进行测试,看看是否有本地存储,如果有,则在那里存储和检索我的 cookie 数据,如果没有,那么就像平常一样使用 cookie 吗?

Note 1:我在 Stack Overflow 上搜索了类似的问题,有这个乍一看似乎正是我所说的 https://stackoverflow.com/questions/8347200/local-storage-android-and-phonegap,但它太简洁了,所以我无法解析它来知道我应该用它做什么。另外,我认为它假设存在我认为不存在的库和代码。我也看了这个问题 https://stackoverflow.com/questions/6130480/write-local-storage-data-into-cookie-via-javascript但我认为这与我所追求的相反。

Note 2:这是我当前用于获取和设置 cookie 的代码(从网络上的某个地方获取。直到 Android 问题为止,都是非常可靠的):

function getCookie(c_name)
{
    var c_start = document.cookie.indexOf(c_name + "=");

    if (document.cookie.length > 0)
    {
        if (c_start !== -1)
        {
            return getCookieSubstring(c_start, c_name);
        }
    }
    return "";
}

function setCookie(c_name, value, expiredays)
{
        var exdate = new Date();
        exdate.setDate(exdate.getDate() + expiredays);
        document.cookie = c_name + "=" + escape(value) +
        ((expiredays === null) ? "" : ";expires=" + exdate.toUTCString());
        alert("this is document.cookie: " + document.cookie);
}

看一下http://diveintohtml5.info/storage.html http://diveintohtml5.info/storage.html。历史可能根本不是很有趣,但它至少提供了指向其他教程的优秀链接列表进一步阅读部分 http://diveintohtml5.info/storage.html#further-reading.

那么,现在来看看你的代码。首先要提到的是localStorage没有过期 - 它是持久的(直到用户手动清理所有内容)。如果您想使用一些较短的存储空间,也可以使用sessionStorage,它具有相同的界面,但仅持续到浏览器关闭为止。

改写你的代码很简单:

function getCookie(c_name) {
    return localStorage.getItem(c_name);
}

function setCookie(c_name, value, expiredays) {
    return localStorage.setItem(c_name, value);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Javascript 将 cookie 存储在本地存储中? 的相关文章

随机推荐

  • Google iot MQTT - ESP32 首次连接,仅在 30m 后重新连接

    我正在使用 ESP32 与谷歌物联网云合作 我发送假值只是为了使用 MQTT 数据 PUB SUB 进行测试 显然我成功发布了值 有时 我无法重新连接到谷歌物联网 我不知道为什么它不断检查 wifi publishing 并且不检查 JWT
  • 闪亮的 selectizeInput:读取当前文本

    与闪亮选择输入小部件 https shiny rstudio com articles selectize html 用户可以输入文本以及从值列表中选择一个值 R中有没有办法读取文本的当前值 Added 我应该明确表示我希望能够阅读用户输入
  • Visual Studio 2010 中的状态栏?

    我试图在 Visual Basic 中的 Visual Studio 2010 Windows 窗体项目的工具箱中找到 System Windows Forms StatusBar 控件 我似乎看不到它 它位于 通用控件 或 容器 部分中的
  • PreferenceFragmentCompat 在 PreferenceCategory 上有填充,我无法摆脱

    所以我一直在尝试使用 androidx preference PreferenceFragmentCompat 创建一个设置活动 并且一切正常 然而 由于某种原因 偏好类别和偏好本身都存在一些填充 我设法通过使用 app iconSpace
  • Zend Framework 2 包括自定义库

    我的目录结构是这样的 c 工作区 Zend c 工作区 自定义库 自定义库是一个共享库 可以在其他应用程序中使用 它不使用命名空间 仅使用旧式下划线 我下载了 ZF2 Restful Module Skeleton 打算将其用作静态服务器
  • 如何模拟类的内部方法?

    我有一个有内部方法的类 我想模拟内部方法 但我无法模拟它 即它不是调用模拟函数而是调用原始函数 有什么办法可以实现这一点吗 编辑 实际上我是最小起订量的新手 我有很多类和类的方法来使用最小起订量进行测试 许多类是内部的 许多有内部方法 许多
  • 为什么我的 GitHub 页面不更新其内容?

    我一直在关注官方指南 pages github com https pages github com 到目前为止 我已经创建了本地存储库并将其推送到 GitHub 但是 无论我做什么更改 我都可以在 GitHub 的存储库中看到它 但是no
  • IE 中的多行按钮

    我目前处于一种可怕的情况 需要我在两行上设置 按钮 类型的输入样式 按钮上的固定宽度会导致按钮内的文本在除 IE 之外的所有其他浏览器中换行 因此 我的问题是 如何指定 value Button to Wrap 的输入在 IE 中换行到两行
  • 如何判断在 Dock 上放置过程中是否按下了修饰键

    我的 Cocoa 应用程序支持将文件拖放到其 Dock 图标上 但我希望根据是否按住修饰键 Command Option 等 来实现不同的行为 我尝试检查modifierFlags为了currentEvent 但无论是否按住修饰符 它们都是
  • 当我获取脚本时终端关闭(在开始时使用点运行)

    这是我的代码 bin bash if 1 then exit 0 fi array cat 1 let b array 1 count 0 for i in 1 7 do for j in 30 37 do for n in 40 47 d
  • 三元运算符的右结合性

    std cout lt lt true high pass false fail pass 是相同的 std cout lt lt true high pass false fail pass 既然三元运算符是右结合的 为什么我们不先进行右
  • 为什么java的inputstream.close()会阻塞?

    我的 Java 程序使用 ProcessBuilder redirectErrorStream 设置为 true 并有一个循环运行进程的输入流的 read 方法 该方法是阻塞的 然后我调用的外部程序停止等待输入和标准输入 我现在想终止该进程
  • 在 Spring MVC 中使用 Jackson JSON 时如何默认启用 Pascal 大小写?

    我有一个使用 Spring MVC 创建和处理多个 REST 端点的项目 我目前正在使用 Jackson 自动处理 JSON 的序列化 反序列化 RequestBody and ResponseBody注释 我已经让杰克逊开始工作了 所以我
  • 将 cqlsh 与 ssl 结合使用

    我已经在我的 cassandra 节点中启用了 ssl 加密 并且我正在尝试弄清楚如何使用带有 ssl 的 cqlsh 连接到我的节点 当我跑步时 cqlsh ssl我收到以下错误 Validation is enabled SSL tra
  • 我们可以用 ES6 Generator 做哪些 for 循环做不到的事情?

    我深入了解了 ES6 功能 Generators 引起了我的注意 我突然想到的一件事是链接 Promise 对象 而我无法使用循环来做到这一点 我们还能做哪些以前做不到的其他机制 我确实明白这是一个广泛的问题 但目前我除了承诺之外什么也想不
  • G1垃圾收集器:为什么幸存者空间总是满的?

    这是输出jmap heap命令 Survivor Space regions 52 capacity 54525952 52 0MB used 54525952 52 0MB free 0 0 0MB 100 0 used 我已经执行了很多
  • 使用UniversalImageDownloader的ListView滚动不平滑

    我正在使用包含图像的 ListView 这些图像是从互联网加载到适配器内的 因此我正在使用通用图像下载器 不幸的是 当我向下滚动需要下载新内容的位置时 ListView 的滚动会短暂 滞后 我实际上期望像 ListView 这样的行为滚动完
  • GitHub 组织未出现在“持续部署”页面中

    我的个人 GitHub 帐户属于五个组织 从 GitHub 设置 Azure 持续集成时 五个组织中只有四个出现在列表中 我们尝试过登录和注销 GitHub 和 Azure 此外 我们尝试更改 Azure 中的帐户 然后重新添加相同的帐户
  • 按新指南随机排序

    为了从 Sql 查询中以随机顺序获取结果 我通常按新的 Guid 进行排序 我之前已经使用实体框架完成了此操作 但由于某种原因它现在不起作用 例如 使用 Adventureworks2008r2 数据库 我在 LinqPad 中运行以下查询
  • 如何使用 Javascript 将 cookie 存储在本地存储中?

    我有一个适用于 Android 希望以后还有 iPhone 的应用程序 它基于 Javascript 并使用 Phonegap Applaud 制作成应用程序 不幸的是 设置和获取 cookie 在 Android 上不起作用 这可能是 A