сделал скрипт записи в "свое" хранилище если не работает локальное. но не могу понять как сделать то же самое для хранилища сессии.
то есть как допилить скрипт что бы и sessionStorage так же записывался.
перепробовал разные варианты и както не получается. все равно записывает в хранилище сессий.
как самый быстрый вариант думал что можно переназначить зранилище сессии на локальное хранилище а дальше оно уже скриптом запишет все в выдуманное хранилище. но почему то не получается.
var userLocalStorage = function() {
var userLocalStorage = {},
storage;
// If Storage exists we modify it to write to our userLocalStorage object instead.
// If Storage does not exist we create an empty object.
if (window.Storage && window.localStorage) {
storage = window.Storage.prototype;
} else {
window.localStorage = {};
storage = window.localStorage;
}
// For older IE
if (!window.location.origin) {
window.location.origin = window.location.protocol + "//" + window.location.hostname + (window.location.port ? ':' + window.location.port: '');
}
var dispatchStorageEvent = function(key, newValue) {
var oldValue = (key == null) ? null : storage.getItem(key), // `==` to match both null and undefined
url = location.href.substr(location.origin.length),
storageEvent = document.createEvent('StorageEvent'); // For IE
storageEvent.initStorageEvent('storage', false, false, key, oldValue, newValue, url, null);
window.dispatchEvent(storageEvent);
};
storage.key = function(i) {
var key = Object.keys(userLocalStorage)[i];
return typeof key === 'string' ? key : null;
};
storage.getItem = function(key) {
return typeof userLocalStorage[key] === 'string' ? userLocalStorage[key] : null;
};
storage.setItem = function(key, value) {
dispatchStorageEvent(key, value);
userLocalStorage[key] = String(value);
};
storage.removeItem = function(key) {
dispatchStorageEvent(key, null);
delete userLocalStorage[key];
};
storage.clear = function() {
dispatchStorageEvent(null, null);
userLocalStorage = {};
};
};
//check and use
if (typeof window.localStorage === 'object') {
try {
localStorage.setItem('localStorageTest', 1);
// localStorage.removeItem('localStorageTest');
} catch (e) {
//use our fake storage if get error in safari
userLocalStorage();
}
} else {
// Use fake localStorage for any browser that does not support it.
userLocalStorage();
}