我正在编写能够使用localStorage或sessionStorage的Javascript类。这个选择是在一个类实例的基础上完成的。在不同浏览器中检测localStorage v sessionStorage对象
我有这个类中的方法,它接收存储对象作为参数,并根据存储类型(即本地v会话)运行一个操作。
例如,
function myMethod(store){
// store: object storageObject
// The storage object being used (either
// sessionStorage or localStorage).
if(store === sessionStorage){
return sessionAction(store)
}else if(store === localStorage){
return localAction(store)
}
return null;
}
这并不在Internet Explorer 8的工作,产生了错误: “类不支持自动化”。它似乎可以在其他浏览器中很好地工作。
我试图获取对象类型(通过Object.prototype.toString.call(店))和测试针对IE8却始终报告的翻译:这一点。我设法从答案到Stackoverflow问题取得了一些进展:Weird IE8 internal [[ class ]] attribute behavior。这个解决方法在IE中给了我[对象存储]。
但是,我仍然无法检测到不同的存储类型。是否有一种简单的方法来检测跨浏览器的两种类型?
我可以重写它,所以类型不能作为参数提供给方法。但是,我宁愿通过允许用户简单地提供存储对象来降低API的简单性。
谢谢为了那个原因。是的,如果我希望IE8按照要求工作,那么蛮力方法可能是唯一的途径。想想,我对此很好;效率低下是可以接受的,因为它只会影响大约5%的用户。这些用户已经在使用IE8时遇到了严重的低效率问题,因此在这个宏伟的计划中,它可能无关紧要。此外,这5%可能会随着时间的推移而减少。 – 2013-03-04 12:09:09