前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Javascript操作将session资料存入window.name里

Javascript操作将session资料存入window.name里

作者头像
德顺
发布2019-11-12 23:10:03
1K0
发布2019-11-12 23:10:03
举报
文章被收录于专栏:前端资源

查了一些资料,大家一致认为除了 Node.js 和服务端,在 JavaScript 里没有 session 这种东西(或者说很不常见),所有的变数,函式等等的资料在页面重新载入时都会被清空,不过我发现 Craig Buckler 写的 javascript session library 。

来看一下它的源代码:
代码语言:javascript
复制
/**
 * Implements cookie-less JavaScript session variables
 * v1.0
 *
 * By Craig Buckler, Optimalworks.net
 *
 */
  
 if (JSON && JSON.stringify && JSON.parse) var Session = Session || (function() {
  
  // cache window 物件
  var win = window.top || window;
   
  // 将资料都存入 window.name 这个 property
  var store = (win.name ? JSON.parse(win.name) : {});
   
  // 将要存入的资料转成 json 格式
  function Save() {
    win.name = JSON.stringify(store);
  };
   
  // 在页面 unload 的时候将资料存入 window.name
  if (window.addEventListener) window.addEventListener("unload", Save, false);
  else if (window.attachEvent) window.attachEvent("onunload", Save);
  else window.onunload = Save;
 
  // public methods
  return {
   
    // 设定一个 session 参数
    set: function(name, value) {
      store[name] = value;
    },
     
    // 列出指定的 session 资料
    get: function(name) {
      return (store[name] ? store[name] : undefined);
    },
     
    // 清除资料 ( session )
    clear: function() { store = {}; },
     
    // 列出所有存入的资料
    dump: function() { return JSON.stringify(store); }
  
  };
  
 })();
使用方法:
代码语言:javascript
复制
// 存入一个 session value/object
Session.set(name, object);
 
// 取出一个 session value/object
Session.get(name);
 
// 清除所有 session 资料
Session.clear();
  
// 列出所有 session 资料
Session.dump();

基本上它的做法是把你所有设定的 session 变数转成了 json 字串然后存入 window.name 这个 property 里。而 window.name 这个 property 在页面跳出时是不会被清除的。

这里有另一个类似的 javascript session library 叫做 sessvars  ,提供了更多的使用方法,如果你有更进阶对 javascript session 的应用也可以看一下。

Demo

这里有一个 Craig Buckler 所写的 demo 。

声明:本文由w3h5原创,转载请注明出处:《Javascript操作将session资料存入window.name里》 https://cloud.tencent.com/developer/article/1537788

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 来看一下它的源代码:
  • 使用方法:
  • Demo
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档