Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   хранилище сессий (https://javascript.ru/forum/misc/67080-khranilishhe-sessijj.html)

ExXxTaSy 27.01.2017 16:55

хранилище сессий
 
сделал скрипт записи в "свое" хранилище если не работает локальное. но не могу понять как сделать то же самое для хранилища сессии.
то есть как допилить скрипт что бы и 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();
    }


Часовой пояс GMT +3, время: 03:03.