Advertisement
Guest User

shared-session-storage.js

a guest
Oct 19th, 2017
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // This script must load first in all tabs!
  2. // Transfers sessionStorage from one tab to another
  3. var sendSessionStorage = function () {
  4.     localStorage.setItem("sessionStorage", JSON.stringify(sessionStorage));
  5.     localStorage.removeItem("sessionStorage");
  6. }
  7.  
  8. var loadSessionStorage = function () {
  9.     var data = JSON.parse(event.newValue);
  10.     for (var key in data) {
  11.         sessionStorage.setItem(key, data[key]);
  12.     }
  13. }
  14.  
  15. var sessionStorage_transfer = function (event) {
  16.     console.log(`Storage event ocurred in '${event.storageArea}'`);
  17.     if (!event) { event = window.event; } // ie suq
  18.     if (!event.newValue) return;          // do nothing if no value to work with
  19.     if (event.key === "getSessionStorage") {
  20.         console.log("\tSending session storage");
  21.         sendSessionStorage();
  22.     } else if (event.key === "sessionStorage" && !sessionStorage.length) {
  23.         console.log("\tLoading session storage");
  24.         loadSessionStorage();
  25.     } else if (event.key === "updateSessionStorage") {
  26.         debugger;
  27.         var key = event.newValue.split(":")[0];
  28.         var value = event.newValue.replace(`/${key}:/`, "");
  29.         sessionStorage.setItem(key, value);
  30.     } else if (event.key === "deleteSessionStorageItem") {
  31.         debugger;
  32.         sessionStorage.removeItem(event.newValue);
  33.     }
  34. };
  35.  
  36. // listen for changes to localStorage
  37. if (window.addEventListener) {
  38.     window.addEventListener("storage", sessionStorage_transfer, false);
  39. } else {
  40.     window.attachEvent("onstorage", sessionStorage_transfer);
  41. };
  42.  
  43.  
  44. var triggerStorageSyncEvent = function () {
  45.     localStorage.setItem("getSessionStorage", "foobar");
  46.     localStorage.removeItem("getSessionStorage");
  47. }
  48.  
  49. // Ask other tabs for session storage (this is ONLY to trigger event)
  50. if (!sessionStorage.length) {
  51.     triggerStorageSyncEvent();
  52. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement