angular.module('localstorage') .factory('storageHelper', function ($cacheFactory, $window) { 'use strict'; var memoryStorage = $cacheFactory('XXX'); var localStorage = $window.localStorage; return { storage: getStorage() }; function getStorage () { if (isLocalStorageSupported()) { // return localstorage directly, // because chrome does not support method forwarding on localstorage return localStorage; } else { // use memory storage, // because safari in private mode does not allow the use of localstorage return { getItem: memoryStorage.get, setItem: memoryStorage.put, removeItem: memoryStorage.remove }; } } function isLocalStorageSupported () { try { localStorage.setItem('test', 'testValue'); localStorage.removeItem('test'); return true; } catch (error) { return false; } } });