有没有人知道即使页面已刷新,我如何保留Javascript变量?

时间:2009-08-13 07:08:37

标签: javascript

示例:

  1. 在按下按钮(NEW)的主页面中, 页面然后将使用Javascript 在新窗口中打开一个新页面 调用redirectPage()。

  2. 在主页面上点击一个按钮(EXIT), 然后页面将调用 确认退出(),然后 closeChildWindows()关闭所有 重定向到之前弹出新窗口 另一个新页面。

  3. 但是,JS变量 (childWindowHandles)将永远 如果我刷新主页重置, 这会导致页面无法访问 之前关闭所有其他弹出窗口 EXIT按钮正在重新定位 点击

  4. 有谁知道如何解决这个问题?能够保持JS变量(childWindowHandles)甚至主页面正在刷新吗?

    var childWindowHandles = new Array();
    
    function redirectPage(url)
    {
        childWindowHandles[childWindowHandles.length] = window.open(url)
    }
    
    function confirmExit(url)
    {
        closeChildWindows()
        window.location=url
    }
    
    function closeChildWindows() 
    {
        for (var loop=0; loop<childWindowHandles.length; loop++) 
        {
            if (!childWindowHandles[loop].closed)
            {
                    childWindowHandles[loop].close();
            }
        }
    }
    

6 个答案:

答案 0 :(得分:10)

您可以使用cookies来保留值...

编辑:您可能会发现我使用的一个简单对象:

用法:

// Store a key/value for 1 day:
cookieManager.set('name', 'a value', 1);

// Retrieve a value associated to a key:
var value = cookieManager.get('name');

// Remove a key/value:
cookieManager.remove('name');

实现:

var cookieManager = { 
  set: function (name, value, expireDays) { 
    var expireDate = new Date(); 
    expireDate.setDate(expireDate.getDate() + expireDays); 

    document.cookie = name + "=" + escape(value) + 
      ((!expireDays) ? "" : ";expires="+expireDate.toGMTString()); 
  }, 

  get: function (key) { 
    var start,end; 

    if (document.cookie.length > 0) { 
      start = document.cookie.indexOf(key + "="); 

      if (start != -1) { 
        start = start + key.length + 1; 
        end = document.cookie.indexOf(";",start); 

        if (end == -1) { 
          end = document.cookie.length; 
        }
        return unescape(document.cookie.substring(start,end)); 
      }
    }
    return ""; 
  },

  remove: function (key) {
    this.set(key, '', -1);
  }
}

答案 1 :(得分:3)

您可以使用cookies或window.name :) window.name to store session variables

答案 2 :(得分:2)

Per this post here on SO,Firefox 3.5,Safari 4和IE8支持HTML5 Storage

答案 3 :(得分:1)

或者使用PersistJS,这可以简化您对可用后端存储机制的访问。 (但不含cookie)

答案 4 :(得分:1)

使用window.name

肯定:

  • 它将在浏览器会话时间内生效 - 用户关闭窗口并且它已消失
  • 它不会像Cookie那样在线上添加额外的流量
  • 即使禁用cookie也可以使用
  • 至少2MB空间(Opera的限制是这么低,其他的是32 / 64MB)

我还建议您使用javascript对象存储各种值并使用JSON对其进行序列化,并将该字符串放入window.name。

请确保您不会将任何易受攻击的数据保留在内...出于安全原因。

答案 5 :(得分:0)

您可以使用sessionStorage。

检查出来:

html5_webstorage