사용자 데이터로부터 개체의 유지(persist) 데이터를 가능하게한다.

script object.style.behavior="url('#default#userData')";
object.addBehavior('#default#userData');
HTML <ELEMENT style="behavior:url('#default#userData')" id=idVal>
XML <prefix:CustomTag id=idVal style="behavior:url('#default#userData')" />
인수
prefix CustomTag과 연관된 XML namespace 접두어이다. HTML 태그에서 xmlns 애트리뷰트로 설정한다.
CustomTag 작성자가 정의하여 사용하는 태그이다.
idVal 개체을 대표하는 유일한 인식자 문자열이다.
특기
보안 경고 : 보안상의 이유로, UserData는 저장된 것과 동일한 디렉토리에 동일한 프로토콜을 사용하여야만 접속할 수 있다.
보안 경고 : 이 비헤이버를 잘 못 사용하면 보안문제를 야기시킬 수 있다. UserData에 저장된 데이터는 암호화(encrypt)되지 않아 안전하지 않다. 어느 적용이던 데이터가 저장된 드라이브에 접속하는 것이므로, 신용카드 번호등 보안을 요하는 데이터를 저장하지 않아야 한다.

UserData 비헤이버는 세션드에 대한 정보를 UserData에 저장에 기록하므로서 유지한다. 이는 더 탄력적이고 쿠키보다 더 큰 크기의 정보를 갖는 데이터 구조를 제공한다. UserData의 용량은 도메인의 안전지역(security zone)에 따라 다르다. 다음 표는 안전지역에 따라 각 문서에서와 도메인 전체적인 UserData 저장의 최대 용량을 보여준다. 브라우저 도구인터넷 옵션보안 설정에따라

안전지역 문서 한계(KB) 도메인 한계 (KB)
지역 컴퓨터 Local Machine 128 1024
로칼 인트라넷 Intranet 512 10240
신뢰할 수있는 사이트 Trusted Sites 128 1024
인터넷 Internet 128 1024
제한된 사이트 Restricted 64 640

UserData 비헤이버는 각 개체마다 하나의 UserData 저장을 사용하여 데이터를 유지한다. UserData 저장은 saveload 메서드를 사용하여 캐쉬(cache)에 유지된다. 데이터가 저장되면, Explorer가 닫고 다시 열더라도 다시 로딩될 수 있다.

UserData 비헤이버 클라스를 html, head, title이나 style 개체에 설정하고, saveload 메서드를 호출하면 오류가 발생한다.

필요한 style은 인라인이나 문서 head 속에서 설정할 수 있다.

<STYLE>
.sUserData {behavior:url(#default#userData);}
</STYLE>

UserData에서 id는 선택적인이지만, 포함시킴으로서 호출하거나 성능을 향상시킬 수 있다.

UserData 비헤이버는 IE5Win32Unix 플랫트폼에서 지원된다.


attribute property 설명
expires expires UserData 비헤이버로 유지되는 데이터의 만료기간을 반환하거나 설정한다.
XMLDocument XMLDocument 개체에 반영된 XML DOM(Document Object Model)의 참조를 반환한다.

메서드 설명
getAttribute 지정된 애트리뷰트의 값을 반환한다.
load userData 저장으로부터 userData 지속에 참여하는 개체를 로딩한다.
removeAttribute 지정된 애트리뷰트를 제거한다.
save userData 저장으로 userData 지속에 참여하는 개체를 저장한다.
setAttribute 지정된 애트리뷰트의 값을 설정한다.

적용
개체 IE
<ELEMENT style="behavior:url('#default#userData')" id=idVal> IE5(win32,unix)
A ACRONYM ADDRESS AREA B BIG BLOCKQUOTE BUTTON CAPTION CENTER CITE CODE DD DEL DFN DIR DIV DL DT EM FONT FORM hn HR I IMG INPUT type=button INPUT type=checkbox INPUT type=file INPUT type=hidden INPUT type=image INPUT type=password INPUT type=radio INPUT type=reset INPUT type=submit INPUT type=text KBD LABEL LI LISTING MAP MARQUEE MENU OBJECT OL OPTION P plainText PRE Q S SAMP SELECT SMALL SPAN STRIKE STRONG SUB SUP TABLE TEXTAREA TT U UL VAR XMP

userData 비헤이버 예제

<!DOCTYPE html public "-//w3c//dtd html 4//en">
<HTML>
<HEAD>
<TITLE>언어 참조 - Javascript - 비헤비어(behavior) - userData 예제</TITLE>
<META http-equiv="Content-Type" content="text/html; charset=euc-kr">

<HEAD>
<STYLE>.sUserData {behavior:url(#default#userData);}</STYLE>
<SCRIPT>
function DoSave(){
  var persistObj=formName.persistID;
  if (!persistObj.value){
    alert('입력하고 진행하라.');
    return;
  }
  persistObj.setAttribute('persistStr',persistObj.value);
  persistObj.save('xmlObj');
  showA.innerHTML='persistObj.value=<FONT color=blue><B>'+persistObj.value+'</B></FONT>';
}
function DoLoad(){
  var persistObj=formName.persistID;
  persistObj.load('xmlObj');
  persistObj.value=persistObj.getAttribute('persistStr');
  showA.innerHTML='persistObj.value=<FONT color=blue><B>'+persistObj.value+'</B></FONT>';
}
</SCRIPT>
</HEAD>

<BODY>
<DIV style=width:500;padding:10>
<DIV style="border:solid 1 blue;background:fff;text-align:center;width:100%;margin:5">
<H4><SPAN class=titleblue><SPAN class=behavior>userData</SPAN> 예제</SPAN></H4>
</DIV>
<DIV style=text-align:right><SCRIPT>document.write(document.location)</SCRIPT></DIV><BR><BR>
<FORM id="formName">
<INPUT class="sUserData" type="text" id="persistID">
<INPUT type="button" value="읽기" onclick="DoLoad()">
<INPUT type="button" value="저장" onclick="DoSave()">
</FORM><BR>
<DIV id=showA>결과 표시창</DIV><BR><BR>
<DIV>다른 페이지로 갔다가 다시와서 읽거나, 새로고침해 보라.</DIV>
</DIV>

</BODY>
</HTML>

userData 비헤이버 예제

입력 문자열을 바꾸고 읽어보라. 전에 저장된 내용이 읽힌다.

<HTML xmlns:myNamespace>
<HEAD>
<STYLE>myNamespace\:cacheObj {behavior:url(#default#userData);}</STYLE>
<SCRIPT>
function saveCache(){
  cachetag.setAttribute('attPersist',textObj.value);
  cachetag.save('cache');
  cachetag.value=cachetag.getAttribute('attPersist');
  str='<FONT color=red><B>save</B></FONT><BR>';
  showAttrib();
}
function loadCache(){
  cachetag.load('cache');
  cachetag.value=cachetag.getAttribute('attPersist');
  str='<FONT color=blue><B>load</B></FONT><BR>';
  showAttrib();
}
function showAttrib(){
  str+='cachetag.scopeName=<FONT color=blue>'+cachetag.scopeName+'</FONT><BR>';
  str+='cachetag.nodeName=<FONT color=blue>'+cachetag.nodeName+'</FONT><BR>';
  str+='cachetag.attributes[cachetag.attributes.length-1].name=<FONT color=blue>'+
    cachetag.attributes[cachetag.attributes.length-1].name+'</FONT><BR>';
  str+='cachetag.attributes[cachetag.attributes.length-1].value=<FONT color=blue>'+
    cachetag.attributes[cachetag.attributes.length-1].value+'</FONT>';
  showB.innerHTML=str;
}
</SCRIPT>
</HEAD>

<BODY>
<myNamespace:cacheObj id="cachetag"></myNamespace:cacheObj>
<INPUT type="button" value="읽기" onclick="loadCache()">
<INPUT type="button" value="저장" onclick="saveCache()">
<INPUT type="text" id="textObj" value="캐쉬 문자열">
<DIV id=showB></DIV>
</BODY>
</HTML>