localstorage.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. //存储媒介封装
  2. var LocalStorage = (UE.LocalStorage = (function() {
  3. var storage = window.localStorage || getUserData() || null,
  4. LOCAL_FILE = "localStorage";
  5. return {
  6. saveLocalData: function(key, data) {
  7. if (storage && data) {
  8. storage.setItem(key, data);
  9. return true;
  10. }
  11. return false;
  12. },
  13. getLocalData: function(key) {
  14. if (storage) {
  15. return storage.getItem(key);
  16. }
  17. return null;
  18. },
  19. removeItem: function(key) {
  20. storage && storage.removeItem(key);
  21. }
  22. };
  23. function getUserData() {
  24. var container = document.createElement("div");
  25. container.style.display = "none";
  26. if (!container.addBehavior) {
  27. return null;
  28. }
  29. container.addBehavior("#default#userdata");
  30. return {
  31. getItem: function(key) {
  32. var result = null;
  33. try {
  34. document.body.appendChild(container);
  35. container.load(LOCAL_FILE);
  36. result = container.getAttribute(key);
  37. document.body.removeChild(container);
  38. } catch (e) {}
  39. return result;
  40. },
  41. setItem: function(key, value) {
  42. document.body.appendChild(container);
  43. container.setAttribute(key, value);
  44. container.save(LOCAL_FILE);
  45. document.body.removeChild(container);
  46. },
  47. //// 暂时没有用到
  48. //clear: function () {
  49. //
  50. // var expiresTime = new Date();
  51. // expiresTime.setFullYear(expiresTime.getFullYear() - 1);
  52. // document.body.appendChild(container);
  53. // container.expires = expiresTime.toUTCString();
  54. // container.save(LOCAL_FILE);
  55. // document.body.removeChild(container);
  56. //
  57. //},
  58. removeItem: function(key) {
  59. document.body.appendChild(container);
  60. container.removeAttribute(key);
  61. container.save(LOCAL_FILE);
  62. document.body.removeChild(container);
  63. }
  64. };
  65. }
  66. })());
  67. (function() {
  68. var ROOTKEY = "ueditor_preference";
  69. UE.Editor.prototype.setPreferences = function(key, value) {
  70. var obj = {};
  71. if (utils.isString(key)) {
  72. obj[key] = value;
  73. } else {
  74. obj = key;
  75. }
  76. var data = LocalStorage.getLocalData(ROOTKEY);
  77. if (data && (data = utils.str2json(data))) {
  78. utils.extend(data, obj);
  79. } else {
  80. data = obj;
  81. }
  82. data && LocalStorage.saveLocalData(ROOTKEY, utils.json2str(data));
  83. };
  84. UE.Editor.prototype.getPreferences = function(key) {
  85. var data = LocalStorage.getLocalData(ROOTKEY);
  86. if (data && (data = utils.str2json(data))) {
  87. return key ? data[key] : data;
  88. }
  89. return null;
  90. };
  91. UE.Editor.prototype.removePreferences = function(key) {
  92. var data = LocalStorage.getLocalData(ROOTKEY);
  93. if (data && (data = utils.str2json(data))) {
  94. data[key] = undefined;
  95. delete data[key];
  96. }
  97. data && LocalStorage.saveLocalData(ROOTKEY, utils.json2str(data));
  98. };
  99. })();