经过一些研究,我似乎(大部分)找到了我的问题的答案。
是否有某种官方声明表达了这一点(“this”表示 IE9 不再支持 userData)?
由于我找不到任何官方声明确认在 IE9 中停止支持此特定行为,因此网络上的评论和投诉就足够了:IE9 不支持 userData 行为。此外,IE10 不支持任何行为和 HTC。
有没有办法测试给定的 IE 版本是否支持它(userData 行为)(没有浏览器嗅探)?
对于不支持 userData 的 IE10 和 IE 的早期版本,可以检查addBehavior()
行为已附加到的元素上是否存在成员函数:
//Assuming "element" has had the userData behavior associated with it through CSS
if(element.addBehavior)
处理 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
}
}
仍然会感谢 MS 的官方声明确认这种支持的下降,以及在不添加虚拟属性的情况下确定完整的 userData 行为支持的方法。如果您遇到其中任何一个,请随时发布它们。