Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // This script must load first in all tabs!
- // Transfers sessionStorage from one tab to another
- var sendSessionStorage = function () {
- localStorage.setItem("sessionStorage", JSON.stringify(sessionStorage));
- localStorage.removeItem("sessionStorage");
- }
- var loadSessionStorage = function () {
- var data = JSON.parse(event.newValue);
- for (var key in data) {
- sessionStorage.setItem(key, data[key]);
- }
- }
- var sessionStorage_transfer = function (event) {
- console.log(`Storage event ocurred in '${event.storageArea}'`);
- if (!event) { event = window.event; } // ie suq
- if (!event.newValue) return; // do nothing if no value to work with
- if (event.key === "getSessionStorage") {
- console.log("\tSending session storage");
- sendSessionStorage();
- } else if (event.key === "sessionStorage" && !sessionStorage.length) {
- console.log("\tLoading session storage");
- loadSessionStorage();
- } else if (event.key === "updateSessionStorage") {
- debugger;
- var key = event.newValue.split(":")[0];
- var value = event.newValue.replace(`/${key}:/`, "");
- sessionStorage.setItem(key, value);
- } else if (event.key === "deleteSessionStorageItem") {
- debugger;
- sessionStorage.removeItem(event.newValue);
- }
- };
- // listen for changes to localStorage
- if (window.addEventListener) {
- window.addEventListener("storage", sessionStorage_transfer, false);
- } else {
- window.attachEvent("onstorage", sessionStorage_transfer);
- };
- var triggerStorageSyncEvent = function () {
- localStorage.setItem("getSessionStorage", "foobar");
- localStorage.removeItem("getSessionStorage");
- }
- // Ask other tabs for session storage (this is ONLY to trigger event)
- if (!sessionStorage.length) {
- triggerStorageSyncEvent();
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement