Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 本地存储导致浏览器崩溃_Html_Google Chrome_Firefox_Local Storage - Fatal编程技术网

Html 本地存储导致浏览器崩溃

Html 本地存储导致浏览器崩溃,html,google-chrome,firefox,local-storage,Html,Google Chrome,Firefox,Local Storage,localStorageTest在localStorage中存储递增的值,直到达到浏览器的localStorage大小限制 function localStorageTest(key, len) { var value = window.localStorage.getItem(key); value = (value == null)?"":value; var numIters = len - value.length; while(numIters--) {

localStorageTest
在localStorage中存储递增的值,直到达到浏览器的localStorage大小限制

function localStorageTest(key, len) {
   var value = window.localStorage.getItem(key); 
   value = (value == null)?"":value;
   var numIters = len - value.length;
   while(numIters--) {
       value += "1";
       window.localStorage.setItem(key, value);
       if (window.localStorage.getItem(key) != value) {
           console.log("limit reached at " + (value.length-1).toString() + " bytes");
           break;
       }
   }
   console.log("stored " + value.length + " bytes");
}
铬:

localStorageTest("1", 80000);
<browser crashed>
铬:

localStorageIncrementalTest("1", 30000);
stored 30000 bytes
stored 35000 bytes
...
stored 1800000 bytes
<browser crashed>
localStorageTest2();
<browser crashed>
铬:

localStorageIncrementalTest("1", 30000);
stored 30000 bytes
stored 35000 bytes
...
stored 1800000 bytes
<browser crashed>
localStorageTest2();
<browser crashed>
localStorageTest2();
火狐:

localStorageTest2();
<browser crashed>
localStorageTest2();

测试localStorage2也导致浏览器崩溃。

我不确定浏览器崩溃的原因,但值得在和上报告

但是,localStorage并不适合这种用途。它是一个同步API,在使用时会给浏览器带来很大的压力,特别是当它被频繁使用时,通常会导致页面性能不佳

此外,您的测试不会产生正确的结果-
setItem(x,y)
会在您超出限制时引发异常<代码>localStorage.setItem(x,y);if(y==localStorage.getItem(x)){…}将永远不会到达
if
部分,因为当达到限制时,它将提前抛出异常

替代方案是简单变量、服务器存储或IndexedDB

Chrome还有文件系统API和Web SQL数据库API,但最好不要依赖它们,因为其他浏览器不支持它们

localStorageTest2();
<browser crashed>
localStorageTest2();
<browser crashed>