|
1 | 1 | (function () { |
2 | 2 | // Object.assign polyfill |
3 | 3 | // - https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#Polyfill |
4 | | - Object.assign || Object.defineProperty(Object, 'assign', {enumerable: !1, configurable: !0, writable: !0, value: function (e) {'use strict'; if (void 0 === e || e === null) throw new TypeError('Cannot convert first argument to object'); for (var r = Object(e), t = 1; t < arguments.length; t++) {var n = arguments[t]; if (void 0 !== n && n !== null) {n = Object(n); for (var o = Object.keys(Object(n)), a = 0, c = o.length; c > a; a++) {var i = o[a], b = Object.getOwnPropertyDescriptor(n, i); void 0 !== b && b.enumerable && (r[i] = n[i]);}}} return r;}}); // eslint-disable-line |
| 4 | + Object.assign || Object.defineProperty(Object, 'assign', { enumerable: !1, configurable: !0, writable: !0, value: function(e) { 'use strict'; if (void 0 === e || e === null) throw new TypeError('Cannot convert first argument to object'); for (var r = Object(e), t = 1; t < arguments.length; t++) { var n = arguments[t]; if (void 0 !== n && n !== null) { n = Object(n); for (var o = Object.keys(Object(n)), a = 0, c = o.length; c > a; a++) { var i = o[a], b = Object.getOwnPropertyDescriptor(n, i); void 0 !== b && b.enumerable && (r[i] = n[i]); } } } return r; } }); // eslint-disable-line |
| 5 | + |
| 6 | + function storageAvailable(type) { |
| 7 | + let storage; |
| 8 | + try { |
| 9 | + storage = window[type]; |
| 10 | + const x = '__storage_test__'; |
| 11 | + storage.setItem(x, x); |
| 12 | + storage.removeItem(x); |
| 13 | + return true; |
| 14 | + } catch (e) { |
| 15 | + return ( |
| 16 | + e instanceof DOMException && |
| 17 | + e.name === 'QuotaExceededError' && |
| 18 | + // acknowledge QuotaExceededError only if there's something already stored |
| 19 | + storage && |
| 20 | + storage.length !== 0 |
| 21 | + ); |
| 22 | + } |
| 23 | + } |
5 | 24 |
|
6 | 25 | var ConstructorioID = function (options) { |
7 | 26 | var defaults = { |
|
158 | 177 |
|
159 | 178 | ConstructorioID.prototype.get_local_object = function (key) { |
160 | 179 | var data; |
161 | | - var localStorage = window && window.localStorage; |
162 | | - if (localStorage && typeof key === 'string') { |
| 180 | + var localStorage = storageAvailable('localStorage') && window && window.localStorage; |
| 181 | + if (localStorage && typeof key === 'string') { |
163 | 182 | try { |
164 | 183 | data = JSON.parse(localStorage.getItem(key)); |
165 | 184 | } catch (e) { |
|
170 | 189 | }; |
171 | 190 |
|
172 | 191 | ConstructorioID.prototype.set_local_object = function (key, data) { |
173 | | - var localStorage = window && window.localStorage; |
| 192 | + var localStorage = storageAvailable('localStorage') && window && window.localStorage; |
174 | 193 |
|
175 | 194 | if (localStorage && typeof key === 'string') { |
176 | 195 | if (typeof data === 'object') { |
|
192 | 211 | }; |
193 | 212 |
|
194 | 213 | ConstructorioID.prototype.delete_local_object = function (key) { |
195 | | - var localStorage = window && window.localStorage; |
| 214 | + var localStorage = storageAvailable('localStorage') && window && window.localStorage; |
196 | 215 |
|
197 | 216 | if (localStorage && typeof key === 'string') { |
198 | 217 | try { |
|
0 commit comments