这太棒了,我经常看到这个在其他网站上工作但从未在我正在工作的网站上工作.
我用ajax引入了新内容,我知道history.js和History API,我不想更改URL,只是让浏览器缓存新的HTML内容,这样当用户离开页面并返回使用时后退按钮,它仍然有更新的HTML.
我看到这在其他站点中一直有效,没有更改URL或使用#井号.
是否有一个技巧让它工作或是由浏览器随机决定?
如果我不想使用URL来获取此信息,是否有一个简单的替代方案?
我正在研究使用浏览器sessionStorage的Web应用程序,并试图找到有关大小限制的当前信息.似乎大多数桌面浏览器都施加了5MB的限制.但是,我没有找到很多最近的文章,也没有关于移动浏览器的信息.
W3C Web存储规范的磁盘空间表示"建议每个源最多5个兆字节的限制.欢迎实施反馈,并将在未来更新此建议."
localstorage的QuirksMode HTML5兼容性页面于2009年6月12日进行了最后一次重大更新,仅包括去年当前浏览器的数据:IE8,FF 3.5b4,Saf 4,Chrome 2.
根据DOM存储简介,IE8"允许Web应用程序存储近10 MB的用户数据." sessionStorage简介似乎证实"Firefox和Safari的存储限制是每个域5MB,Internet Explorer的限制是每个域10 MB."
Web存储:来自Opera开发人员站点的更简单,更强大的客户端数据存储说:"截至目前,大多数已实现Web存储的浏览器(包括Opera)都将存储限制设置为每个域5 Mb."
最近的铬问题(#42740)在会话存储上增加了5mb的配额.
第5章客户端数据存储从建筑iPhone应用程序使用HTML,CSS和JavaScript状态"在写这篇文章的时候,为的localStorage和sessionStorage的浏览器大小的限制仍然在变化."
问题:根据这些信息,我应该假设5MB是限制还是我应该花时间测试不同的浏览器?有没有人知道有这些结果的现有测试套件(la Browserscope)?
我有一个使用localStorage事件的应用程序.一个窗口写入存储,另一个窗口响应.这已经好几个月了,并且仍然在Chrome,FF和IE10上运行,但是由于我的用户开始使用IE11 - 它偶尔会中断.
经过深入调查后,我发现只有当新值中的字符数低于一定数量(我的测量结果为4282)时,IE11 才会触发onstorage事件.
此外,如果已经有相同的密钥下的值,IE只会触发事件如果两个旧值和新的大小一起是在该限制.
一个重要的提示:在所有情况下的价值也被写入到存储.在任何阶段都不会超过存储大小.
这是一个用于演示此问题的小代码示例:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
function handle_storage(event)
{
alert("event fired!");
}
window.addEventListener("storage", handle_storage);
var keyName = "keyName";
function writeToStorage()
{
var num = parseInt(document.getElementById("bla").value);
var customValue = "";
for(var i = 0; i<num; i++)
customValue+="c";
localStorage.setItem(keyName, customValue);
}
</script>
</head>
<body >
<button onclick="writeToStorage()">Write</button>
<input type="text" id="bla"/>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
首先尝试使用一个小数字 - 在输入中写入100并单击按钮.您将看到警告说该事件已被触发.
然后尝试使用大量的数字 - 5000.您将看不到警报.
然后尝试数字的组合,你会看到每次新旧值的总和超过限制 - 不会触发任何事件.
这是IE11中的错误吗?
我错过了什么吗?
有没有解决方法?
我需要增加Android WebView中LocalStorage的默认配额限制.目前我只能使用大约2.5MB.当尝试存储更多数据时,quota_exceeded_err (dom exception 22)会引发a.
有什么想法或者我必须切换到db/file系统吗?
考虑HTML5客户端存储的一些问题:
编辑
只是对答案的跟进,在删除WebDatabase项目后,所有浏览器都在继续实施即将成为标准的" IndexedDB "
如何使用本地存储来存储多个变量的值?本地存储是否有任何限制.所有浏览器目前支持本地存储?
我想不出一个好头衔,所以希望能做到.
我正在做的是创建一个离线HTML5 webapp."出于某些原因"我不希望将某些文件放在缓存清单中,而是希望将内容放在localStorage中.
所有测试均在Google Chrome for Mac/Mac OS 10.6.6中完成
我有4个.JSON文件,3,120,792大小完全是字节大小.首次访问(在线)应用程序时,我将这个JSON内容下拉并将其放在一个字符串变量中,比方说str.之前存储的JSON字符串,我所有的剥离\n和\t,和更换\"用',最大限度地减少字符串的长度.
以下是字符串长度(Chrome控制台中的str.length):
original str : 3,117,764 (this is a concatenation of the contents of the 4 JSON files)
reformatted JSON: 2,732,249 (not too shabby - should save me a few bytes)
Run Code Online (Sandbox Code Playgroud)
但是,现在当我尝试将此字符串存储在localStorage中时,我收到的错误是我已超出缓存大小(Error: QUOTA_EXCEEDED_ERR: DOM Exception 22).但是此页面没有其他缓存(我已手动删除了所有Google Chrome缓存文件).
为什么会这样?
存储在缓存中时字符串的大小是多少?
如何最大限度地减小此大小以充分利用localStorage?
编辑添加:我已尝试将字符串的1,000,000个字符保存到localStorage(localStorage.setItem('x',str.substr(1,1000000))中.当我在Chrome的缓存文件夹中检查localStorage文件大小时,它是2MB.这是一个sqlite数据库.看起来浏览器使用的是实际的localStorage数据库大小,而不是存储在其中的数据大小.这当然很糟糕,但可能是标准行为.我想你可以在localStorage中存储的最长的字符串是大约2,500,000个字符?
html5 ×3
javascript ×3
caching ×2
ajax ×1
android ×1
browser ×1
database ×1
file ×1
firefox ×1
history.js ×1
html ×1
performance ×1
quota ×1
w3c ×1
webview ×1