@cryptotaxi247 / netdata-1 / commits / 32043a285

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>