4

Web Storage 仕様をサポートしていない IE バージョンに遭遇したときに使用する、IE9 でのuserDataの動作に問題がありました。

具体的には、.save() 関数が実行されたときに値が保存されないようです (実際、C:\Users\USERNAME\AppData\Roaming\Microsoft\Internet Explorer\UserData .save() の実行時に userData フォルダーさえ作成されません)。

私はいくつかの調査を行い、さまざまなサイトでの少数のコメントからのコンセンサスは、IE9 では無効になっているようだということです。

これを表現する何らかの公式声明はありますか?もしそうなら、特定の IE バージョンがそれをサポートしているかどうかをテストする方法はありますか (ブラウザー スニッフィングなし)?

4

1 に答える 1

6

いくつかの調査の後、私は(ほとんどの場合)私の質問に対する答えを見つけたようです。

これを表現する何らかの公式声明はありますか (「これ」は、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 動作サポートを決定する方法を引き続き歓迎します。これらのいずれかに遭遇した場合は、遠慮なく投稿してください。

于 2012-11-21T02:27:20.017 に答える