一個簡單的UserData管理器,可以save、load和delete數據。
兼容上面兩種的寫法是這樣:
<!DOCTYPE?HTML?PUBLIC?"-//W3C//DTD?HTML?4.0?Transitional//EN">
<HTML>
<HEAD>
<TITLE>?UserData?manager?</TITLE>
<META?NAME="Generator"?CONTENT="EditPlus">
<META?NAME="Author"?CONTENT="emu">
<META?NAME="Keywords"?CONTENT="IE?USER?DATA?manager">
<META?NAME="Description"?CONTENT="UserData?manager">
</HEAD>
<BODY>
<SCRIPT?LANGUAGE="JavaScript">
<!--
document.documentElement.addBehavior("#default#userdata");
function??saveUserData(key,?value){
??var?ex;?
????with(document.documentElement)try?{
????load(key);
????setAttribute("value",?value);
????save(key);
????return??getAttribute("value");
??}
??catch?(ex){alert(ex.message)}
}
function?loadUserData(key){
??var?ex;?
????with(document.documentElement)try{
????load(key);
????return?getAttribute("value");
??}
??catch?(ex){alert(ex.message);return?null;}
}
function??deleteUserData(key){
??var?ex;?
????with(document.documentElement)try{
??????load(key);
????expires?=?new?Date(315532799000).toUTCString();
????save(key);
??}
??catch?(ex){alert(ex.message);}
}?
saveUserData("emu","hello?world?!")
alert(loadUserData("emu"))
deleteUserData("emu")
alert(loadUserData("emu"))
//-->
</SCRIPT>
</BODY>
</HTML>
<HTML>
<HEAD>
<TITLE>?UserData?manager?</TITLE>
<META?NAME="Generator"?CONTENT="EditPlus">
<META?NAME="Author"?CONTENT="emu">
<META?NAME="Keywords"?CONTENT="IE?USER?DATA?manager">
<META?NAME="Description"?CONTENT="UserData?manager">
</HEAD>
<BODY>
<SCRIPT?LANGUAGE="JavaScript">
<!--
document.documentElement.addBehavior("#default#userdata");
function??saveUserData(key,?value){
??var?ex;?
????with(document.documentElement)try?{
????load(key);
????setAttribute("value",?value);
????save(key);
????return??getAttribute("value");
??}
??catch?(ex){alert(ex.message)}
}
function?loadUserData(key){
??var?ex;?
????with(document.documentElement)try{
????load(key);
????return?getAttribute("value");
??}
??catch?(ex){alert(ex.message);return?null;}
}
function??deleteUserData(key){
??var?ex;?
????with(document.documentElement)try{
??????load(key);
????expires?=?new?Date(315532799000).toUTCString();
????save(key);
??}
??catch?(ex){alert(ex.message);}
}?
saveUserData("emu","hello?world?!")
alert(loadUserData("emu"))
deleteUserData("emu")
alert(loadUserData("emu"))
//-->
</SCRIPT>
</BODY>
</HTML>
注意這一行: expires = new Date(315532799000).toUTCString();
315532799000 是格林威治時間1979年12月31日23時59分59秒。這是刪除UserData的最靠前的一個有效expires時間了,再往前一毫秒,expires = new Date(315532798999).toUTCString(); 就刪不掉userdata了,可以認為是IE的一個bug。所以我們刪除userdata的時候不能像刪除cookie一樣,用new Date(0)來制造過期時間了。
一個等效的寫法是 expires = new Date(1980,0,1,7,59,59).toUTCString();? 用toGMTString也一樣。
如果需要按照user來管理userdata,可以這樣:
?
<!DOCTYPE?HTML?PUBLIC?"-//W3C//DTD?HTML?4.0?Transitional//EN">
<HTML>
<HEAD>
<TITLE>?UserData?manager?</TITLE>
<META?NAME="Generator"?CONTENT="EditPlus">
<META?NAME="Author"?CONTENT="emu">
<META?NAME="Keywords"?CONTENT="IE?USER?DATA?manager">
<META?NAME="Description"?CONTENT="UserData?manager">
</HEAD>
<BODY>
<SCRIPT?LANGUAGE="JavaScript">
<!--
document.documentElement.addBehavior("#default#userdata");
function??saveUserData(user,key,value){
??var?ex;?
????with(document.documentElement)try?{
????load(user);
????setAttribute(key,?value);
????save(user);
????return??getAttribute("value");
??}
??catch?(ex){alert(ex.message)}
}
function?loadUserData(user,key){
??var?ex;?
????with(document.documentElement)try{
????load(user);
????return?getAttribute(key);
??}
??catch?(ex){alert(ex.message);return?null;}
}
function??deleteUserData(user){
??var?ex;?
????with(document.documentElement)try{
??????load(user);
????expires?=?new?Date(315532799000).toGMTString();
????save(user);
??}
??catch?(ex){alert(ex.message);}
}?
saveUserData("emu","Name","emu?!")
alert(loadUserData("emu","Name"))
saveUserData("emu","blog","http://www.aygfsteel.com/emu")
alert(loadUserData("emu","blog"))
//-->
</SCRIPT>
</BODY>
</HTML>
<HTML>
<HEAD>
<TITLE>?UserData?manager?</TITLE>
<META?NAME="Generator"?CONTENT="EditPlus">
<META?NAME="Author"?CONTENT="emu">
<META?NAME="Keywords"?CONTENT="IE?USER?DATA?manager">
<META?NAME="Description"?CONTENT="UserData?manager">
</HEAD>
<BODY>
<SCRIPT?LANGUAGE="JavaScript">
<!--
document.documentElement.addBehavior("#default#userdata");
function??saveUserData(user,key,value){
??var?ex;?
????with(document.documentElement)try?{
????load(user);
????setAttribute(key,?value);
????save(user);
????return??getAttribute("value");
??}
??catch?(ex){alert(ex.message)}
}
function?loadUserData(user,key){
??var?ex;?
????with(document.documentElement)try{
????load(user);
????return?getAttribute(key);
??}
??catch?(ex){alert(ex.message);return?null;}
}
function??deleteUserData(user){
??var?ex;?
????with(document.documentElement)try{
??????load(user);
????expires?=?new?Date(315532799000).toGMTString();
????save(user);
??}
??catch?(ex){alert(ex.message);}
}?
saveUserData("emu","Name","emu?!")
alert(loadUserData("emu","Name"))
saveUserData("emu","blog","http://www.aygfsteel.com/emu")
alert(loadUserData("emu","blog"))
//-->
</SCRIPT>
</BODY>
</HTML>
兼容上面兩種的寫法是這樣:
<!DOCTYPE?HTML?PUBLIC?"-//W3C//DTD?HTML?4.0?Transitional//EN">
<HTML>
<HEAD>
<TITLE>?UserData?manager?</TITLE>
<META?NAME="Generator"?CONTENT="EditPlus">
<META?NAME="Author"?CONTENT="emu">
<META?NAME="Keywords"?CONTENT="IE?USER?DATA?manager">
<META?NAME="Description"?CONTENT="UserData?manager">
</HEAD>
<BODY>
<SCRIPT?LANGUAGE="JavaScript">
<!--
document.documentElement.addBehavior("#default#userdata");
function??saveUserData(user,key,value){
??var?ex;?
????if(!value){
????????value?=?key;key=user;user="defaultUser"
????}
????with(document.documentElement)try?{
????load(user);
????expires?=?new?Date(new?Date()-(-86400000)).toGMTString();
????setAttribute(key,?value);
????save(user);
????return??getAttribute("value");
??}
??catch?(ex){alert(ex)}
}
function?loadUserData(user,key){
????if(!key){
????????key=user;user="defaultUser";
????}
??var?ex;?
????with(document.documentElement)try{
????load(user);
????return?getAttribute(key);
??}
??catch?(ex){alert(ex.message);return?null;}
}
function??deleteUserData(user){
??var?ex;?
????if(!user)user="defaultUser";
????with(document.documentElement)try{
??????load(user);
????expires?=?new?Date(new?Date()-86400000).toGMTString();
????save(user);
??}
??catch?(ex){alert(ex.message);}
}?
saveUserData("emu","Name","emu?!")
alert(loadUserData("emu","Name"))
deleteUserData("emu")
alert(loadUserData("emu","Name"))
saveUserData("emu","blog","http://www.aygfsteel.com/emu")
alert(loadUserData("emu","blog"))
deleteUserData("emu")
alert(loadUserData("emu","blog"))
saveUserData("emu_articles","http://www.aygfsteel.com/emu/category/1383.html")
alert(loadUserData("emu_articles"))
deleteUserData()
alert(loadUserData("emu_articles"))
//-->
</SCRIPT>
</BODY>
</HTML>
<HTML>
<HEAD>
<TITLE>?UserData?manager?</TITLE>
<META?NAME="Generator"?CONTENT="EditPlus">
<META?NAME="Author"?CONTENT="emu">
<META?NAME="Keywords"?CONTENT="IE?USER?DATA?manager">
<META?NAME="Description"?CONTENT="UserData?manager">
</HEAD>
<BODY>
<SCRIPT?LANGUAGE="JavaScript">
<!--
document.documentElement.addBehavior("#default#userdata");
function??saveUserData(user,key,value){
??var?ex;?
????if(!value){
????????value?=?key;key=user;user="defaultUser"
????}
????with(document.documentElement)try?{
????load(user);
????expires?=?new?Date(new?Date()-(-86400000)).toGMTString();
????setAttribute(key,?value);
????save(user);
????return??getAttribute("value");
??}
??catch?(ex){alert(ex)}
}
function?loadUserData(user,key){
????if(!key){
????????key=user;user="defaultUser";
????}
??var?ex;?
????with(document.documentElement)try{
????load(user);
????return?getAttribute(key);
??}
??catch?(ex){alert(ex.message);return?null;}
}
function??deleteUserData(user){
??var?ex;?
????if(!user)user="defaultUser";
????with(document.documentElement)try{
??????load(user);
????expires?=?new?Date(new?Date()-86400000).toGMTString();
????save(user);
??}
??catch?(ex){alert(ex.message);}
}?
saveUserData("emu","Name","emu?!")
alert(loadUserData("emu","Name"))
deleteUserData("emu")
alert(loadUserData("emu","Name"))
saveUserData("emu","blog","http://www.aygfsteel.com/emu")
alert(loadUserData("emu","blog"))
deleteUserData("emu")
alert(loadUserData("emu","blog"))
saveUserData("emu_articles","http://www.aygfsteel.com/emu/category/1383.html")
alert(loadUserData("emu_articles"))
deleteUserData()
alert(loadUserData("emu_articles"))
//-->
</SCRIPT>
</BODY>
</HTML>