웹페이지가 저장될 때 개체의 유지(persist) 데이터를 가능하게한다.

script object.style.behavior="url('#default#saveSnapshot')";
object.addBehavior("#default#saveSnapshot");
HTML <ELEMENT style="behavior:url('#default#saveSnapshot')" id=idVal>
XML <prefix:CustomTag id=idVal style="behavior:url('#default#saveSnapshot')" />
인수
prefix CustomTag과 연관된 XML namespace 접두어이다. HTML 태그에서 xmlns 애트리뷰트로 설정한다.
CustomTag 작성자가 정의하여 사용하는 태그이다.
idVal 개체을 대표하는 유일한 인식자 문자열이다.
특기

사용자가 웹페이지를 지역 피씨에 HTML 만 웹페이지로 저장할 때, saveSnapshot 비헤이버는 값, 스타일, 탄력적인 업데이트된 내용, 스크립트 변수들로 부터 유지할 수 있다.

보안 경고 : 이 비헤이버를 잘 못 사용하면 보안문제를 야기시킬 수 있다.
이 비헤이버는 저장된 웹페이지를 단순 텍스트로 데이터를 유지할 수 있다. 페이지가 저장된 드라이브에 접속한 적용(application)은 그 저장된 데이터에 접속을 갖고 데이터를 손상시킬 수 있다. 저장된 데이터는 암호화(encrypt)되지 않아 안전하지 않다. 어느 적용이던 데이터가 저장된 드라이브에 접속하는 것이므로, 신용카드 번호등 보안을 요하는 데이터를 저장하지 않아야 한다.

saveSnapshot 비헤이버는 body 엘레멘트와 rowscells 같은 개별 테이블 엘레멘트들 유지할 수 없다.

saveSnapshot 비헤이버는 엘레멘트가 idclass로 할당되었으면 script 엘레멘트의 내용을 유지할 수 있다. saveSnapshot 비헤이버는 문자열, 부울값과 정수값 만을 유지할 수 있다. 주석이나, 기능함수, 배열변수등 스트립트 개체는 제외된다. 외부 자원에 의한 유지된 script 엘레멘트는 변수들을 원천으로부터 유지 페이지에 기록한다.

saveSnapshot 비헤이버을 사용하기 위하여, meta 태그로 유지 형식의 인식자를 기술한다.

<META name="save" content="snapshot">

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

<STYLE>.SnapshotClass {behavior:url(#default#saveSnapshot);}</STYLE>

유지를 올바르게 하기 위해서는 id가 필요하다.

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


이벤트 설명
onsave 웹페이지가 저장되거나 북마크에 등록될 때, 혹은 사용자가 문서로부터 이탈했을 때, 유지(persist) 엘레멘트로 부터 발생된다.

적용
개체 IE
<ELEMENT style="behavior:url('#default#saveSnapshot')" id=idVal> IE5(win32,unix)
A ACRONYM ADDRESS AREA B BIG BLOCKQUOTE BUTTON 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 P plainText PRE Q S SAMP SCRIPT SELECT SMALL SPAN STRIKE STRONG SUB SUP TABLE TEXTAREA TT U UL VAR XMP

결과 표시창

saveSnapshot 비헤이버로 저장 후 읽어보라.
데이터를 class=SnapshotClass으로 설정된 form 엘레멘트들로 부터 snapShotData에 저장한다.

<HTML>
<HEAD>
<META name="save" content="snapshot">
<STYLE>.SnapshotClass {behavior:url(#default#saveSnapshot);}</STYLE>
<SCRIPT class="SnapshotClass" id=oPersistScript>
var snapShotData=str=allPersistData='';
function StorePersist(){
  var str=snapShotData='';
  for(var i=0;i< formName.elements.length;i++){
    if (formName.elements[i].type=='text'){
      snapShotData+=formName.elements[i].value+'|';
    }
    if (formName.elements[i].tagName=='SELECT'){
      snapShotData+='dataType='+formName.elements[i].options[formName.elements[i].selectedIndex].innerText;
      formName.selName.selected=-1;
    }
  }
  allPersistData=snapShotData;
  str+='저장 : snapShotData=<FONT color=blue>'+snapShotData+'</FONT><BR>';
  showA.innerHTML=str;
}
function RestorePersist(){
  str='';
  if (allPersistData){
    collData=allPersistData.split('|');
    for(var i=0;i< collData.length;i++){
      if (collData[i].indexOf('dataType=')==-1) formName.elements[i].value=collData[i];
      else if (collData[i].indexOf('dataType=')>=0){
        formName.selName.selectedIndex=collData[i].substring(collData[i].indexOf('=')+1,collData[i].length);
        str+='allPersistData=<FONT color=blue>'+allPersistData+'</FONT><BR>';
        str+='collData=<FONT color=blue>'+collData+'</FONT><BR>';
        for (k=0;k< collData.length;k++){
          str+='<SPAN style="width:2em"></SPAN>collData['+k+']=<FONT color=blue>'+collData[k]+'</FONT><BR>';
        }
      }
    }
  } else str+='저장된 데이터가 없다.';
  showA.innerHTML=str;
}
</SCRIPT>
</HEAD>
<BODY>
<FORM id="formName">
<TABLE width=500>
<TR><TD><LABEL for="inName">성명=</LABEL></TD>
<TD><INPUT class="SnapshotClass" type="text" id="inName" size=10 value="홍길동"></TD>
<TD><LABEL for="inArea">지역=</LABEL></TD>
<TD><INPUT class="SnapshotClass" type="text" id="inArea" size=15 value="서울 특별시"></TD>
<TD><LABEL for="selName">직업=</LABEL></TD>
<TD>
<SELECT id="selName">
<OPTION>회사원<OPTION>교직원<OPTION>학생<OPTION selected>자영업
</SELECT></TD></TR>
</TABLE>
<INPUT type="button" value="SCRIP의 데이터로부터 저장" onclick="StorePersist()">
<INPUT type="button" value="SCRIP의 데이터로부터 읽기" onclick="RestorePersist()">
</FORM>
<DIV id=showA>결과 표시창</DIV>
</BODY>
</HTML>