Thursday 28 December 2017

javascript - html5 localStorage error with Safari: "QUOTA_EXCEEDED_ERR: DOM Exception 22: An attempt was made to add something to storage that exceeded the quota."

itemprop="text">

My webapp have javascript errors in
ios safari private
browsing:





JavaScript:error




undefined



QUOTA_EXCEEDED_ERR:DOM
Exception 22:An attempt was made to add something to
storage...





my
code:



localStorage.setItem('test',1)


Answer




Apparently this is by design. When Safari (OS
X or iOS) is in private browsing mode, it appears as though
localStorage is available, but trying to call
setItem throws an
exception.



store.js line
73

"QUOTA_EXCEEDED_ERR: DOM Exception 22: An attempt was made to
add something to storage that exceeded the
quota."


What happens
is that the window object still exposes localStorage in the
global namespace, but when you call setItem, this exception is
thrown. Any calls to removeItem are
ignored.



I believe the simplest fix (although I
haven't tested this cross browser yet) would be to alter the function
isLocalStorageNameSupported() to test that you can also set
some value.



href="https://github.com/marcuswestin/store.js/issues/42"
rel="noreferrer">https://github.com/marcuswestin/store.js/issues/42



function
isLocalStorageNameSupported()

{
var testKey = 'test',
storage = window.sessionStorage;
try
{

storage.setItem(testKey, '1');
storage.removeItem(testKey);
return
localStorageName in win && win[localStorageName];
}
catch
(error)
{

return false;

}
}

No comments:

Post a Comment

php - file_get_contents shows unexpected output while reading a file

I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print &q...