IE userData
3165 ワード
IEブラウザは、独自のクライアントストレージメカニズム「userData」を実現しています.userDataは一定量の文字列データ記憶を実現でき,Web記憶の代替案として利用できる.ここではIE userDataについて詳しく説明する
概要
IE 5.0では、マイクロソフトはカスタム動作を通じてユーザーデータを永続化する概念を導入した.ユーザーデータにより、ドキュメントごとに最大128 KBのデータを使用でき、ドメイン名ごとに最大1 MBのデータを使用できます.
[注意]IE 9+ブラウザはサポートされていません
永続化されたユーザー・データを使用するには、まず次のようにして、CSSを使用してある要素にuserData動作を指定する必要があります.
データの保存
エレメントがuserData動作を使用すると、setAttribute()メソッドを使用してデータを保存できます.ブラウザキャッシュにデータをコミットするには、save()メソッドを呼び出し、保存するデータ空間の名前を伝える必要があります.データ空間の名前は、異なるデータセットを区別するためにのみ完全に任意に使用できます.
データを読み出す
load()メソッドは、格納されたデータをロードするために使用されます.使用するときは、ロードするストレージデータを指定するファイル名と同様の文字列をパラメータとして渡す必要があります.データがロードされると、その要素のプロパティからこれらの名前/値ペア形式のデータにアクセスできます.getAttribute()を使用して、次のようにデータを問い合わせることができます.
[注意]IE 11ブラウザがエラーを報告し、IE 9、10ブラウザがnullを返す
データの削除
属性名を指定する限り、removeAttribute()メソッドで要素データを削除することを明確に指定できます.削除後は、次のようにsave()を再度呼び出して変更をコミットする必要があります.
有効期間
デフォルトでは、userDataで格納されているデータは、手動で削除しない限り無効になりません.ただし、expiresプロパティを設定して期限を指定することもできます.たとえば、格納されたデータに対して、次のように100日間の有効期間を設定できます.
userDataではクッキーよりも多くのデータを格納できますが、localStorageやsessionStorageでは格納できるデータよりも小さいです
最後に
上記コードはIEブラウザでのみ有効であるため、他のブラウザが上記コードをロードしないようにIE条件コメントを使用することが望ましい
概要
IE 5.0では、マイクロソフトはカスタム動作を通じてユーザーデータを永続化する概念を導入した.ユーザーデータにより、ドキュメントごとに最大128 KBのデータを使用でき、ドメイン名ごとに最大1 MBのデータを使用できます.
[注意]IE 9+ブラウザはサポートされていません
永続化されたユーザー・データを使用するには、まず次のようにして、CSSを使用してある要素にuserData動作を指定する必要があります.
或者使用动态生成元素的方式
var memory = document.createElement("div"); // memory.id = "_memory"; // id memory.style.display = "none"; // memory.style.behavior = "url('#default#userData')";// userData document.body.appendChild(memory); // document
データの保存
エレメントがuserData動作を使用すると、setAttribute()メソッドを使用してデータを保存できます.ブラウザキャッシュにデータをコミットするには、save()メソッドを呼び出し、保存するデータ空間の名前を伝える必要があります.データ空間の名前は、異なるデータセットを区別するためにのみ完全に任意に使用できます.
var dataStore = document.getElementById("dataStore");
dataStore.setAttribute("name", "Nicholas");
dataStore.setAttribute("book", "Professional JavaScript");
dataStore.save("BookInfo");
このコードには、要素に2つの情報が格納されています.setAttribute()でデータを格納した後、save()メソッドを呼び出し、データ空間の名前をBookInfoと指定しますデータを読み出す
load()メソッドは、格納されたデータをロードするために使用されます.使用するときは、ロードするストレージデータを指定するファイル名と同様の文字列をパラメータとして渡す必要があります.データがロードされると、その要素のプロパティからこれらの名前/値ペア形式のデータにアクセスできます.getAttribute()を使用して、次のようにデータを問い合わせることができます.
dataStore.load("BookInfo");
console.log(dataStore.getAttribute("name"));//"Nicholas"console.log(dataStore.getAttribute("book"));//"Professional JavaScript"
load()の呼び出しは、BookInfoデータ空間内のすべての情報を取得し、要素を介してデータにアクセスできるようにします.ロードが確実に完了するまでデータを使用できます.getAttribute()が存在しない名前またはまだロードされていない名前を呼び出した場合はnullを返します.[注意]IE 11ブラウザがエラーを報告し、IE 9、10ブラウザがnullを返す
データの削除
属性名を指定する限り、removeAttribute()メソッドで要素データを削除することを明確に指定できます.削除後は、次のようにsave()を再度呼び出して変更をコミットする必要があります.
dataStore.removeAttribute("name");
dataStore.removeAttribute("book");
dataStore.save("BookInfo");
このコードは2つのデータ属性を削除し、変更をキャッシュに保存します.有効期間
デフォルトでは、userDataで格納されているデータは、手動で削除しない限り無効になりません.ただし、expiresプロパティを設定して期限を指定することもできます.たとえば、格納されたデータに対して、次のように100日間の有効期間を設定できます.
var now = (new Date()).getTime();var expires = now + 100 * 24 * 60 * 60 * 1000;
expires = new Date(expires).toUTCString();
memory.expires = expires;
IE userDataの役割ドメインは、現在のドキュメントと同じディレクトリのドキュメントに制限されます.役割ドメインにはクッキーが広くなく、クッキーはディレクトリの下にあるサブディレクトリにも有効です.userDataのメカニズムはクッキーのようにpathとdomain属性を設定することでその役割ドメインを制御または変更する方法ではありませんuserDataではクッキーよりも多くのデータを格納できますが、localStorageやsessionStorageでは格納できるデータよりも小さいです
最後に
上記コードはIEブラウザでのみ有効であるため、他のブラウザが上記コードをロードしないようにIE条件コメントを使用することが望ましい