【问题标题】:Saving a Javascript variable for later usage?保存 Javascript 变量以供以后使用?
【发布时间】:2013-10-06 17:33:27
【问题描述】:

我想知道是否有一种方法可以将一个或多个 javascript 变量保存到本地机器,然后再调用它们?

var a = b

然后当您返回网页时,它会记住 B 的值吗?

【问题讨论】:

标签: javascript persistence


【解决方案1】:

如果您的意思是在网络浏览器中,有两种选择:

  • Cookies

  • Web storage(在您的情况下,特别是“本地存储”而不是“会话存储”)

浏览器普遍支持 Cookie,但用户可以将其关闭。 JavaScript 中的 API 非常非常糟糕。 cookie 也会发送到您的服务器,因此它们会增加对您服务器的请求大小,但可以在客户端和服务器端使用。

设置 cookie 很容易,但在客户端读取 cookie 却很痛苦。查看上面的 MDN 页面以获取示例。

Web 存储为supported by all major modern browsers(包括 IE8 及更高版本)。 API 比 cookie 好得多。 Web存储是纯粹的客户端,数据不会自动发送到服务器(当然你可以自己发送)。

这是一个使用网络存储的示例:Live Copy

<label>Value: <input type="text" id="theValue"></label>
<input type="button" id="setValue" value="Set">
<script>
(function() {
  // Use an input to show the current value and let
  // the user set a new one
  var input = document.getElementById("theValue");

  // Reading the value, which was store as "theValue"
  if (localStorage && 'theValue' in localStorage) {
    input.value = localStorage.theValue;
  }

  document.getElementById("setValue").onclick = function () {
    // Writing the value
    localStorage && (localStorage.theValue = input.value);
  };
})();
</script>

【讨论】:

    【解决方案2】:

    您有三个选项来存储状态,您可以稍后在同一域的另一个网页中检索这些状态:

    1. 将数据保存在 cookie 中,然后在以后的网页中,从 cookie 中检索数据。

    2. 将数据保存在用户浏览器的本地存储中,然后在以后的网页中从本地存储中检索数据。

    3. 以某种方式保存数据服务器端(通过 post 或 ajax 调用),然后让服务器将其放回页面的下一次调用或通过 ajax 调用从服务器请求它。

    本地存储可能是简单的客户端存储数据值的最佳选择,它没有服务器端的理由要在 cookie 中。您可以阅读有关本地存储的信息here

    // save data value
    localStorage.setItem("name", "John");
    
    // retrieve data value
    var name = localStorage.getItem("name");
    

    从 IE8 开始,IE 就支持本地存储。如果您需要旧版本 IE 的支持,您可以使用 cookie 或使用我之前链接的 MDN 页面中包含的本地存储 shim。

    【讨论】:

      【解决方案3】:

      你要找的可能是如何制作和使用Cookies

      cookie 是存储在访问者计算机上的变量。每次同一台计算机通过浏览器请求页面时,它也会发送 cookie。使用 JavaScript,您可以创建和检索 cookie 值。

      【讨论】:

      • 猜你需要一个网络服务器来测试cookie是否真的有效? (我有一个,只是检查)
      • @Comms,是的,你需要它来检查它是否可以在其他计算机上运行,​​我认为在你的本地网络上。
      • 好的,没问题 - 谢谢(上次我尝试使用 cookie,服务器不喜欢它们 XD)
      【解决方案4】:

      您可以尝试 HTML5 本地存储,使用 Modernizr lib。

      例子:

      if (Modernizr.localstorage) {
          localStorage.setItem("bar", "1");
          var foo = localStorage.getItem("bar");
      } else {
          // local storage unavailable
      }
      

      【讨论】:

      • 我相信不需要Modernizr,用if (localStorage) { ...
      猜你喜欢
      • 2011-11-07
      • 1970-01-01
      • 2011-09-05
      • 2020-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多