Javascript 在会话cookie中存储查询字符串参数

Javascript 在会话cookie中存储查询字符串参数,javascript,session,cookies,Javascript,Session,Cookies,在用户停留在网页上期间,我需要存储用户的初始查询字符串参数。我决定解析查询字符串参数并将它们粘贴到会话cookie中,这样当我有需要初始查询参数的代码时,我就调用cookie 这似乎并不总是奏效,尤其是在IE中。有人能给我一些建议吗?我想也许可以将其存储在dom存储中,但我不确定这是否是正确的方法。 代码存在于我的页面标题中,可以在站点的所有页面上访问 以下是我总结的内容: var urlParams; (window.onpopstate = function () { var matc

在用户停留在网页上期间,我需要存储用户的初始查询字符串参数。我决定解析查询字符串参数并将它们粘贴到会话cookie中,这样当我有需要初始查询参数的代码时,我就调用cookie

这似乎并不总是奏效,尤其是在IE中。有人能给我一些建议吗?我想也许可以将其存储在dom存储中,但我不确定这是否是正确的方法。 代码存在于我的页面标题中,可以在站点的所有页面上访问

以下是我总结的内容:

var urlParams;
(window.onpopstate = function () {
   var match,
       pl     = /\+/g,
       search = /([^&=]+)=?([^&]*)/g,
       decode = function (s) { return decodeURIComponent(s.replace(pl, " ")); },
       query  = window.location.search.substring(1);

   urlParams = {};
   while (match = search.exec(query))
      urlParams[decode(match[1])] = decode(match[2]);
})();

function set_cookie(name, value) {
  var cookie = [name, '=', JSON.stringify(value), '; domain=.', window.location.host.toString(), '; path=/;'].join('');
  document.cookie = cookie;
}

function read_cookie(name) {
 var result = document.cookie.match(new RegExp(name + '=([^;]+)'));
 result && (result = JSON.parse(result[1]));
 return result;
}

if(read_cookie('tbts') === null){
  set_cookie('tbts', urlParams);
}

var urlParamsCookie = read_cookie('tbts');

您没有指定IE的哪个版本,但是根据,
popstate
直到IE10才可用。

我在IE10中测试。urlParamsCookie变量并不总是显示在dom中。您能推荐window.onpopstate的替代方案吗?另外,谢谢你的网站,我不知道。