Kev*_*vin 4 javascript css internet-explorer
我在使用IE9中的userData行为时遇到了麻烦,我在遇到不支持Web存储规范的IE版本时会使用它.
具体来说,执行.save()函数时似乎没有保存值(事实上,甚至没有userData文件夹C:\Users\USERNAME\AppData\Roaming\Microsoft\Internet Explorer\UserData
,也没有在执行.save()时创建).
我做了一些研究,从各种网站上的一些评论中得出的共识是,它似乎在IE9中被禁用了.
是否有某种官方声明表达这一点?如果是这样,有没有办法测试给定的IE版本是否支持它(没有浏览器嗅探)?
经过一些研究,我似乎(大部分)找到了我的问题的答案.
是否有某种官方声明表达这一点("这"意味着IE9不再支持userData)?
由于我没有找到确认在IE9中停止支持此特定行为的官方声明,因此网上的评论和投诉必须足够:IE9中不支持userData行为.此外,IE10中不支持任何行为和HTC.
有没有办法测试给定的IE版本是否支持它(userData行为)(没有浏览器嗅探)?
对于IE10和不支持userData的IE的早期版本,可以检查addBehavior()行为附加到的元素上是否存在成员函数:
//Assuming "element" has had the userData behavior associated with it through CSS
if(element.addBehavior)
Run Code Online (Sandbox Code Playgroud)
处理IE9有点棘手,因为存在与userData行为相关的方法,并且在正确使用时不会抛出异常.
幸运的是,我们可以利用数据存储机制与XMLDocument具有userData行为的每个元素所接收的成员之间的关系.由于此特定成员表示在save()调用时要存储到磁盘的文件,element.XMLDocument.xml因此应该在每次调用时更新element.addAttribute(key, value).如果不是,那么我们可以假设不支持userData:
//Assuming "element" has had the userData behavior associated with it through CSS
if(element.addBehavior)
{
element.addAttribute("test", "");
//If the to-be-saved XML was updated with the attribute we just added
if(element.XMLDocument.xml.indexOf("test") !== -1)
{
//userData behavior is supported
}
else
{
//userData behavior is not supported
}
}
Run Code Online (Sandbox Code Playgroud)
MS的官方声明确认了这种支持的下降,以及确定完整的userData行为支持而不添加虚拟属性的方法.如果您遇到其中任何一个,请随时发布.
| 归档时间: |
|
| 查看次数: |
1742 次 |
| 最近记录: |