Dev*_*ull 21 isolatedstorage local-storage internet-explorer-9
这两个陈述window['localStorage']和window.localStorage
访问网址"file:/// C:/index.html"时未定义
在文件系统上运行网站时localStorage是否禁用?
PS.我正在运行该网站的Windows 7手机上托管该网站的isolatedStorage.
ben*_*sch 23
是的,IE9不支持本地文件的localStorage.不在我能找到的任何官方文档中,但在本博客中描述了相同的问题.
您必须在外部托管网站,或者找到其他一些持久化数据的方法.[无论如何,支持HTML5风格的本地存储在许多浏览器中仍处于测试阶段.特别是对于本地文件系统上的页面.]
您可以尝试userdata行为,这是Microsoft为Internet Explorer开发的W3C之前的解决方案.但不确定它是否支持本地文件系统.链接:
参考文献:
作为一个额外的奖励,IE将打击任何解决此问题的尝试.
理所当然的事情是将你自己的虚拟localStorage存根,这样当从本地FileSystem加载它时,至少你的东西不会中断:
if (document.all && !window.localStorage)
{
window.localStorage = {};
window.localStorage.removeItem = function () { };
}
Run Code Online (Sandbox Code Playgroud)
有没有猜测运行后会弹出什么警报(window.localStorage)?你猜是"未定义"???
谢谢,IE!现在实际上有一个丑陋的黑客可以做到这一点.由于IE不会让你重复使用它的保留字"localStorage",我们只需将整个事情移到其他地方:
window.localStorageAlias = window.localStorage;
if (document.all && !window.localStorage)
{
window.localStorageAlias = {};
window.localStorageAlias.removeItem = function () { };
}
Run Code Online (Sandbox Code Playgroud)
所以现在,在你通常说localStorage ['beans'] = 7的任何地方,你只需要localStorageAlias ['beans'] = 7并且你又回来了.当然,从本地文件系统运行时,IE实际上不会在会话之间存储任何内容.但至少它不会破裂.
为了额外的功劳,你可以修复上面的代码来交换IE 在本地运行时实际使用的某种形式的持久存储.
| 归档时间: |
|
| 查看次数: |
34724 次 |
| 最近记录: |