いくつかの調査の後、私は(ほとんどの場合)私の質問に対する答えを見つけたようです。
これを表現する何らかの公式声明はありますか (「これ」は、userData が IE9 でサポートされなくなったことを意味します)?
IE9 でのこの特定の動作のサポートの中止を確認する公式声明を見つけることができなかったので、ネット上のコメントや苦情で十分です。userData の動作は IE9 ではサポートされていません。さらに、IE10 では動作と HTC はサポートされていません。
特定の IE バージョンがそれ (userData の動作) をサポートしているかどうかをテストする方法はありますか (ブラウザー スニッフィングなし)?
userData をサポートしていない IE10 および非常に初期のバージョンの IE ではaddBehavior()
、ビヘイビアーが関連付けられている要素にメンバー関数が存在するかどうかを確認できます。
//Assuming "element" has had the userData behavior associated with it through CSS
if(element.addBehavior)
userData 動作に関連するメソッドが存在し、正しく使用すると例外をスローしないため、IE9 の処理は少し複雑です。
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 動作サポートを決定する方法を引き続き歓迎します。これらのいずれかに遭遇した場合は、遠慮なく投稿してください。