【问题标题】:Is it possible to create a variable, that doesn't change on refresh the page, in javascript?是否可以在javascript中创建一个在刷新页面时不会改变的变量?
【发布时间】:2011-08-28 02:39:35
【问题描述】:

问完这个question:

我正在考虑这个解决方案:

  • javascript 脚本中创建一个布尔标志并使其 true
    • true表示使用浏览器刷新页面。
    • false表示使用按钮刷新页面。
  • 在按钮的onclick属性中,我将flag设置为false并调用window.location.reload()刷新页面。
  • <body> 标签的 onload 属性中,我检查 flag 如果它是真的切换到Home 标签否则切换到@ 987654326@ 包含 <div> 标签的标签 我想刷新它的内容。之后,将 flag 设置为 true.*

但不幸的是,它不起作用,并且 flag 对于 @987654329 的 onload 属性始终为 true @ 标签。是否有可能(以某种方式)在javascript中创建一个在刷新页面时不会改变的变量?

*我的页面由许多选项卡组成,第一个是 Home(使用浏览器刷新页面时应该显示的位置),第二个是 Page1(其中包含 <div> em> 标签我想刷新它的内容以及使用按钮刷新页面时应该显示的位置)

【问题讨论】:

  • 这听起来像是一个完美的 cookie 情况。

标签: javascript html global-variables partial-page-refresh


【解决方案1】:

浏览器是无状态的,这意味着每次页面加载时页面上的所有内容都会刷新。

有几种方法可以存储您可以在请求之间访问的持久性信息:

  • 将所需数据存储在 cookie 中,并在页面加载时读取
  • 将数据传递到 URL 并在页面加载时读取当前 URL(包括您传递的数据)。例如:如果用户通过浏览器刷新,则将浏览器重定向到http://something.com/yourpage.html#flag=true;如果用户单击按钮,则重定向到http://something.com/yourpage.html#flag=false。在页面加载时,只需读取当前 URL 并查看标志是什么。
  • 使用 cookie 创建会话并将数据存储在服务器上(从技术上讲,这与第一个选项非常相似,只是您只需在客户端存储一个令牌并将其传递给服务器以检索存储在那里的数据)

【讨论】:

    【解决方案2】:

    没有。但是,您可以通过多种方式存储变量的值。

    • cookie
    • 在网址中(查询字符串)
    • 从会话变量中设置的页面上的隐藏元素。

    【讨论】:

      【解决方案3】:

      这听起来像是您可以在浏览器中使用 sessionStorage 或 localStorage 的情况,如果浏览器不支持,您可以使用 cookie...

      【讨论】:

        【解决方案4】:

        您可以使用 cookie、window.name 和 window.location.hash 键来持久化数据

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-03-23
          • 2012-07-31
          • 2014-09-04
          • 1970-01-01
          • 1970-01-01
          • 2021-12-25
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多