test browser localStorage before using it
Costa Tsaousis (ktsaou) committed
Feb 4, 2017 at 01:50 UTC
32043a285ad7c59a9cd679b496fa5961284c443b
2 files changed
+49
-5
web/dashboard.js
+24
-2
@@ -363,6 +363,28 @@ var NETDATA = window.NETDATA || {};
363
callback: {} // only used for resetting back to defaults
364
};
365
366
+ NETDATA.localStorageTested = -1;
367
+ NETDATA.localStorageTest = function() {
368
+ if(NETDATA.localStorageTested !== -1)
369
+ return NETDATA.localStorageTested;
370
+
371
+ if(typeof Storage !== "undefined" && typeof localStorage === 'object') {
372
+ var test = 'test';
373
+ try {
374
+ localStorage.setItem(test, test);
375
+ localStorage.removeItem(test);
376
+ NETDATA.localStorageTested = true;
377
+ }
378
+ catch (e) {
379
+ NETDATA.localStorageTested = false;
380
+ }
381
+ }
382
+ else
383
+ NETDATA.localStorageTested = false;
384
+
385
+ return NETDATA.localStorageTested;
386
+ };
387
+
388
NETDATA.localStorageGet = function(key, def, callback) {
389
var ret = def;
390
@@ -371,7 +393,7 @@ var NETDATA = window.NETDATA || {};
393
NETDATA.localStorage.callback[key.toString()] = callback;
394
}
395
374
- if(typeof Storage !== "undefined" && typeof localStorage === 'object') {
396
+ if(NETDATA.localStorageTest() === true) {
397
try {
398
// console.log('localStorage: loading "' + key.toString() + '"');
399
ret = localStorage.getItem(key.toString());
@@ -413,7 +435,7 @@ var NETDATA = window.NETDATA || {};
435
NETDATA.localStorage.callback[key.toString()] = callback;
436
}
437
416
- if(typeof Storage !== "undefined" && typeof localStorage === 'object') {
438
+ if(NETDATA.localStorageTest() === true) {
439
// console.log('localStorage: saving "' + key.toString() + '" with value "' + JSON.stringify(value) + '"');
440
try {
441
localStorage.setItem(key.toString(), JSON.stringify(value));
web/index.html
+25
-3
@@ -508,11 +508,33 @@
508
// --------------------------------------------------------------------
509
// check options that should be processed before loading netdata.js
510
511
+ var localStorageTested = -1;
512
+ function localStorageTest() {
513
+ if(localStorageTested !== -1)
514
+ return localStorageTested;
515
+
516
+ if(typeof Storage !== "undefined" && typeof localStorage === 'object') {
517
+ var test = 'test';
518
+ try {
519
+ localStorage.setItem(test, test);
520
+ localStorage.removeItem(test);
521
+ localStorageTested = true;
522
+ }
523
+ catch (e) {
524
+ localStorageTested = false;
525
+ }
526
+ }
527
+ else
528
+ localStorageTested = false;
529
+
530
+ return localStorageTested;
531
+ }
532
+
533
function loadLocalStorage(name) {
534
var ret = null;
535
536
try {
515
- if(typeof Storage !== "undefined" && typeof localStorage === 'object')
537
+ if(localStorageTest() === true)
538
ret = localStorage.getItem(name);
539
}
540
catch(error) {
@@ -530,7 +552,7 @@
552
function saveLocalStorage(name, value) {
553
// console.log('saving: ' + name.toString() + ' = ' + value.toString());
554
try {
533
- if(typeof Storage !== "undefined" && typeof localStorage === 'object') {
555
+ if(localStorageTest() === true) {
556
localStorage.setItem(name, value.toString());
557
return true;
558
}
@@ -3290,4 +3312,4 @@
3312
</div>
3313
</body>
3314
</html>
3293
-<script type="text/javascript" src="dashboard.js?v20170127-1"></script>
3315
+<script type="text/javascript" src="dashboard.js?v20170204-1"></script>