紫影基地

 找回密码
 立即注册
查看: 258|回复: 0

[程序架构] Javascript操作将session资料存入取

[复制链接]
阅读字号:

2001

主题

2116

帖子

21万

积分

超级版主

Rank: 8Rank: 8

积分
210086
发表于 2024-4-25 12:15:42 | 显示全部楼层 |阅读模式
  1. Javascript操作将session资料存入window.name里

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

  4. 来看一下它的源代码:
  5. 代码语言:javascript
  6. 复制
  7. /**
  8. * Implements cookie-less JavaScript session variables
  9. * v1.0
  10. *
  11. * By Craig Buckler, Optimalworks.net
  12. *
  13. */
  14.   
  15. if (JSON && JSON.stringify && JSON.parse) var Session = Session || (function() {
  16.   
  17.   // cache window 物件
  18.   var win = window.top || window;
  19.    
  20.   // 将资料都存入 window.name 这个 property
  21.   var store = (win.name ? JSON.parse(win.name) : {});
  22.    
  23.   // 将要存入的资料转成 json 格式
  24.   function Save() {
  25.     win.name = JSON.stringify(store);
  26.   };
  27.    
  28.   // 在页面 unload 的时候将资料存入 window.name
  29.   if (window.addEventListener) window.addEventListener("unload", Save, false);
  30.   else if (window.attachEvent) window.attachEvent("onunload", Save);
  31.   else window.onunload = Save;

  32.   // public methods
  33.   return {
  34.    
  35.     // 设定一个 session 参数
  36.     set: function(name, value) {
  37.       store[name] = value;
  38.     },
  39.      
  40.     // 列出指定的 session 资料
  41.     get: function(name) {
  42.       return (store[name] ? store[name] : undefined);
  43.     },
  44.      
  45.     // 清除资料 ( session )
  46.     clear: function() { store = {}; },
  47.      
  48.     // 列出所有存入的资料
  49.     dump: function() { return JSON.stringify(store); }
  50.   
  51.   };
  52.   
  53. })();
  54. 使用方法:
  55. 代码语言:javascript
  56. 复制
  57. // 存入一个 session value/object
  58. Session.set(name, object);

  59. // 取出一个 session value/object
  60. Session.get(name);

  61. // 清除所有 session 资料
  62. Session.clear();
  63.   
  64. // 列出所有 session 资料
  65. Session.dump();
  66. 基本上它的做法是把你所有设定的 session 变数转成了 json 字串然后存入 window.name 这个 property 里。而 window.name 这个 property 在页面跳出时是不会被清除的。

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


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|紫影基地

GMT+8, 2025-1-12 07:02 , Processed in 0.079475 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表