웹 프론트엔드 JS 튜토리얼 OfflineSave 오프라인 저장 코드 재출시 지침_javascript 기술

OfflineSave 오프라인 저장 코드 재출시 지침_javascript 기술

May 16, 2016 pm 07:12 PM

알아야 할 사항: 처리해야 하는 모든 HTML 요소에는 ID 속성이 있어야 합니다. 구성 요소는

1 요소의 ID 속성만 감지합니다.
<STYLE> ;/Head> {behavior:url(#default#userdata);}
</STYLE>

2. <INPUT type=text class=userData id=OfflineSave_Area를 추가합니다. ;body> style="display:none">

3.
<script src=OfflineSave.js></script> 추가

4. OfflineSave
예: <form id=myOfflineSaveForm OfflineSave ToolsBarStyle="mycssclass">
ToolsBarStyle은 CSS 클래스 속성이고 컨테이너는 선택, 입력, 버튼을 포함한 div입니다. >
참고:
사례 1:
<form id=myform onsubmit="docheck(this)">
<input type=text id=mytext> type=submit value=submit>
</form>
이 경우 구성요소는 서버 생존 상태를 자동으로 감지할 수 있으며, 서버에 연결할 수 없으면
docheck 기능도 정상적으로 작동할 수 있습니다.

사례 2:
<form id=myform >
<input type=text id=mytext> =submit onclick="myform.submit()">
</form>
이 경우 구성요소는 제출 이벤트를 가로챌 수 없으며 서버 생존 상태를 자동으로 감지할 수도 없습니다.

제안: 폼에서 데이터 감지 시 폼 태그의 onsubmit 이벤트에 감지 기능을 작성해주세요

연락처: qq:13872888 참고: blueidea




코드 복사

코드는 다음과 같습니다.

var os_Obj,os_usd;

var os_dg=document.getElementById;
var os_ButtonCss="style=\"cursor:hand;height:20px;padding:0px 3px;border:1px solid #67C1E4;\"";
var os_SelectCss="style=\"font-size:12px;\"";
var os_SaveSuccessStr="离线数据保存成功!";
var os_SaveProStr="请输入离线保存的名称:(如为空则用当前时间表示)";
var os_LoadProStr="确认要载入离线数据吗?";
var os_DelProStr="确认要删除离线数据吗?";
var os_DelSuccessStr="离线数据删除成功!";
var os_oUD="OfflineSave_oPersistInput";
var os_DefaultFiledLength=10;//Default Filed length
var os_str="OfflineSave_";
var os_CannotSaveStr="保存数据时出现错误![离线保存空间仅限640K]\n\n有可能已超出离线保存容量!请删除部分数据后再保存!";
var os_expires = (new Date(2010,1,1)).toUTCString();


InitOfflineSave();
function InitOfflineSave(){
    for(var i=0;i<document.forms.length;i++){
if(document.forms[i].OfflineSave!=null){
os_usd=os_dg("OfflineSave_Area");
var tbs=document.forms[i].ToolsBarStyle==null?"":document.forms[i].ToolsBarStyle;
os_CreateToolBar(document.forms[i],tbs);
os_GetOfflineSaveList(document.forms[i].id);
var cmd=document.forms[i].onsubmit==null?"":document.forms[i].onsubmit;
if(cmd!=""){
cmd=document.forms[i].onsubmit+"";
cmd=cmd.split("{")[1].split("}")[0].replace("\n","");
}
cmd=escape(cmd);
eval("document.forms[i].onsubmit=function(){return os_CheckSubmit('"+document.forms[i].id+"','"+cmd+"');}");
break;
}
}
}

function os_CreateToolBar(obj,boolbarstyle){
var hc;
hc="<div id='os_"+obj.id+"_div'><select id='os_"+obj.id+"_Select' "+os_SelectCss+">";
    hc+="</select>";
    hc+=" ";
    hc+="<input type=button "+os_ButtonCss+" value=载入 onclick=\"os_LoadData('"+obj.id+"');\">";
    hc+=" ";
    hc+="<input type=button "+os_ButtonCss+" value=删除 onclick=\"os_DelData('"+obj.id+"');\">";
    hc+="  ";
    hc+="<input type=button "+os_ButtonCss+" value=离线保存 onclick=\"os_SaveData('"+obj.id+"');\"></div>";
obj.innerHTML=hc obj.innerHTML;
if(boolbarstyle==""){
os_dg("os_" obj.id "_div").style.textAlign = "left" ;
os_dg("os_" obj.id "_div").style.textvAlign ="middle";
os_dg("os_" obj.id "_div").style.paddingTop ="3"; 🎜> os_dg("os_" obj.id "_div").style.height = "30";
os_dg("os_" obj.id "_div").style.border = "1개의 단색 검정"; 🎜> os_dg("os_" obj.id "_div").style.paddingLeft ="5"
}
else
os_dg("os_" obj.id "_div").className=boolbarstyle ;
}

function os_CheckSubmit(id,subfunc){
if(!os_CanSubmit(os_dg(id).action)){
if(confirm("오프라인 저장 프롬프트: nnyou 거기 제출할 서버 연결에 문제가 있을 수 있습니다.")){
          os_SaveData(id); ; 
}

function os_LoadData(id){
var v=os_dg("os_" id "_Select").selectedIndex;
if(v==0) return

var ud=os_str id os_dg(id).length; > if(confirm(os_LoadProStr "nnrecord name:" os_getUserData(ud,"f_" v "_os_savename") "nsave time:" os_getUserData( ud,"f_" v "_os_savedate"))){
var lcount=os_dg (id).length;
for(var i=0;i<lcount;i ){
if(os_dg( id).item(i).type!="submit"&&os_dg(id).item (i).type!="reset"&&os_dg(id).item(i).type!="button"&&os_dg(id) .item(i).id!="os_" id "_Select"){
      if(os_dg(id).item(i).type=="radio"||os_dg(id).item(i) .type=="checkbox")
                                       os_dg(os_dg(id).item( i).id).checked=os_getUserData(ud,"f_" v "_" os_dg(id).item(i).id )=="1"?true:false
else{
if (os_dg(id).item(i).type=="select-multiple"){
var sm =os_getUserData(ud ,"f_" v "_" os_dg(id).item(i).id) .split(","); item(i).length;x )
os_dg(id).item(i).options[x].selected=false; sm.length-1;x )
                                                                                                                                                       
                   else{
                     if(os_dg(id).item(i).type=="select-one")
                         os_dg(os _dg(id).item(i).id).selectedIndex=parseInt (os_getUserData(ud,"f_" v "_" os_dg(id).item(i).id));
                      else{
                         //alert(os_getUserData(ud,"f_" v "_" os_dg(id).item(i).id));
                          os_dg(os_dg(id).item(i).id).value=unescape(os_getUserData(ud,"f_" v "_" os_dg(id).item(i).id));
                      }
                  }
              }
            }
        }
    }
}

함수 os_DelData(id){
    var v=os_dg("os_ " id "_Select").selectedIndex;
    if(v==0)    return;

    var ud=os_str id os_dg(id).length;
    if(confirm(os_DelProStr "nn记录name称:" os_getUserData(ud,"f_" v "_os_savename") "n保存时间:" os_getUserData(ud,"f_" v "_os_savedate"))){
var i=0;
        var ud=os_str id os_dg(id).length;
        var lcount=parseInt(os_getUserData(ud,"count"));

        var vcount=os_dg(id).length;
        for(i=0;i<vcount;i ){
            if(os_dg(id).item(i).type!="button"&&os_dg(id).item(i).id!= "os_" id "_Select")
               if(v<lcount)
                   os_putUserData(ud,"f_" v "_" os_dg(id).item(i).id,os_getUserData(ud,"f_" lcount "_" os_dg(id).item(i).id));
                os_remUserData(ud,"f_" lcount "_" os_dg(id).item(i).id);
        }
        if(v<lcount){
           os_putUserData(ud,"f_" v "_os_savename",os_getUserData(ud,"f_" lcount "_os_savename"));
            os_putUserData(ud,"f_" v "_os_savedate",os_getUserData(ud,"f_" lcount "_os_savedate"));
        }
        os_remUserData(ud,"f_" lcount "_os_savename");
        os_remUserData(ud,"f_" lcount "_os_savedate");

        eval("os_putUserData(ud,"count","" (lcount-1) "");");

        var s=os_dg("os_" id "_Select");
        if(lcount==1){
            os_delUserData(ud);
            while (s.length>0) s.remove(0);
            s.add(new Option("无数据",0));            
        }
        else{
            s.item(0).text="共有" (lcount-1) "个记录";
            if(v<s.length){
               s.item(0).value=0;
                s.item(v).text=s.item(s.length-1).text;
            }
            s.remove(s.length-1);            
        }
        alert(os_DelSuccessStr);
    }
}

함수 os_SaveData(id){
    if(os_dg(id).length<=0){
        alert("[OfflineSave]Error:nn" id " 요소 없음!(입력,라디오,체크박스,선택)");
        반품;
    }

    var sd=new Date();
    var sn=prompt(os_SaveProStr,sd.toLocaleString() ":MyData");
    var ud=os_str id os_dg(id).length;
    var lcount=os_getUserData(ud,"count");
    lcount=lcount==""||lcount==null?1:parseInt(lcount) 1;
    if(os_dg(id).length*10*2*lcount>64000){
        alert(os_CannotSaveStr);
        반품;
    }
    시도해 보세요{

    sn=sn==""?sd.toLocaleString():sn;

    var vcount=os_dg(id).length;
    for(var i=0;i<vcount;i ){
        if(os_dg(id).item(i).type!="submit"&&os_dg(id).item(i).type! ="reset"&&os_dg(id).item(i).type!="button"&&os_dg(id).item(i).id!="os_" id "_Select"){
            if(os_dg(id ).item(i).type=="radio"||os_dg(id).item(i).type=="checkbox"){
               eval("os_putUserData("" ud "","f_" lcount "_" os_dg(id).item(i).id "","" (os_dg(id).item(i).checked?"1":"0") "");");
           }
            else{
               if(os_dg(id).item(i).type=="select-multiple"){
                   var mc="";
                   for(var x=0;x<os_dg(id).item(i).length;x ){
                     if(os_dg(id).item(i).options[x].selected)    mc =x ",";
                   }    
                  eval("os_putUserData("" ud "","f_" lcount "_" os_dg(id).item(i).id "","" mc "");");
                }
               else{
                  if(os_dg(id).item(i).type=="select-one")
                     eval("" ud "","f _" 개수 "_" os_dg(id).item(i).id "","" os_dg(id).item(i).selectedIndex "");");
                   else
                      eval("os_putUserData("" ud "","f_" lcount "_" os_dg(id).item(i).id "","" escape(os_dg(id).item( i).value) "");");
               }
            }
        }
    }
    eval("os_putUserData("" ud "","f_" lcount "_os_savename","" sn "");");
    eval("os_putUserData("" ud "","f_" lcount "_os_savedate","" sd.toLocaleString() "");");
    eval("os_putUserData(ud,"count","" lcount "");");//저장 목록 개수
    var s=os_dg("os_" id "_Select");
    s.item(0).text="共有" lcount "个记录";
    s.item(0).value=0;
    s.add(new Option(sn,lcount));
    alert(os_SaveSuccessStr);
    }
    catch(e){
        alert(os_CannotSaveStr "nn错误原因:" e);
    }
}

함수 os_GetOfflineSaveList(id){
    var ud=os_str id os_dg(id).length;
    var s=os_dg("os_" id "_Select");
    var lcount=os_getUserData(ud,"count");
    var sv="";
    while (s.length>0) s.remove(0);
    lcount=lcount==""||lcount==null?0:parseInt(lcount);
    if(lcount<=0)
        s.add(new Option("无数据","0"));
    else{
        s.add(new Option("共有" lcount "个记录","0"));
        for(var i=1;i<=lcount;i ){
            eval("sv=os_getUserData(ud,"f_" i "_os_savename");");
            s.add(new Option(sv,i));    
        }
    }
}

function os_putUserData(sUDName,sName,sVal) {
  os_usd.load(sUDName);
  os_usd.expires = os_expires;
  os_usd.setAttribute(sName,sVal);
  os_usd.save(sUDName);
  반품;
}

함수 os_remUserData(sUDName,sName) {
  os_usd.load(sUDName);
  os_usd.removeAttribute(sName);
  os_usd.save(sUDName);
  반품;
}

함수 os_getUserData(sUDName,sName) {
  os_usd.load(sUDName);
  return os_usd.getAttribute(sName);
}

function os_delUserData(sUDName){
  var oTimeNow = new Date(); // 시작 시간
  oTimeNow.setMinutes(oTimeNow.getMinutes() 1);
  var sExpirationDate = oTimeNow.toUTCString();
  os_usd.load(sUDName);
  os_usd.expires = sExpirationDate;
  os_usd.save(sUDName);
  반품;
}

함수 os_CanSubmit(url){
    var xmlHTTP = window.ActiveXObject? new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest();
    xmlHTTP.open("get",url,false);
    xmlHTTP.send("");
    return xmlHTTP.status=="200";
}

OfflineSave.htm
复主代码 代码如下:

<html>
    <head>
        <title>离线保存</title>
        <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
        <스타일> .userData {behavior:url(#default#userdata);}
    </STYLE>
        <link href="css.css" rel="stylesheet" type="text/css">
    </head>
    <body>
        <INPUT type="text" class="userData" id="OfflineSave_Area" style="DISPLAY:none">
        <table width="100%" border="0" cellpadding="0" cellspacing="0" style="FONT-SIZE:12px">
            <tr>
                <td height="78" colspan="3" valign="top"><font size="4" color="red">Ajax演示程序(J2EE)</font>
                    <BR>
                    <BR>
                    服务端:<b>JDK1.4 TomCAT4.1 Hibernate3 MSSQL Server2000(SP4) DWR1.0</b><BR>
                    客户端:<b>JavaScript(CallBack) VML </b>
                    <BR>
                    编写人:富深协通常州研发中心 姜泉</td>
            </tr>
            <tr>
                <td colspan="3"><BR>
                    <table border="1" class="listView" width="100%">
                        <Caption>
                            离线数据保存(仅限IE浏览器5.0版本以上)</Caption>
                        <tbody>
                            <tr>
                                <td><form id="myOfflineSaveForm" action="J2EE_AJAX.html" onsubmit="alert('这是在HTML页面中的onsubmit事件中执行的函数!');" OfflineSave>
                                        <table cellSpacing="0" cellPadding="2" width="100%" border="1">
                                            <TR>
                                                <TD>名称<input type="text" id="name" size="5">
                                                </TD>
                                                <TD>公司全称<TEXTAREA id="gsqc" name="gsqc" rows="2" cols="20">
                                                    </TEXTAREA></TD>
                                                <TD>客户代码<INPUT id="dm" type="checkbox" name="dm"></TD>
                                            </TR>
                                            <tr>
                                                <TD>分类<SELECT id="fl" name="fl">
                                                        <OPTION selected>中国人</OPTION>
                                                        <OPTION>外星人</OPTION>
                                                        <OPTION>山西人</OPTION>
                                                    </SELECT></TD>
                                                <TD>性别<INPUT id="cz" type="radio" value="cz" checked name="RadioGroup">男<INPUT id="cz1" type="radio" value="cz1" name="RadioGroup">女</TD>
                                                <TD>增加日期<SELECT id="rq" size="4" name="rq" multiple>
                                                        <OPTION>2000년</OPTION>
                                                  <OPTION>2003년</OPTION>
                                                  <OPTION>2004년</OPTION>
                                                  <OPTION>2005년</OPTION>
                                               </SELECT></TD>
                                         </tr>
                                     </table><입력 유형=제출 값=제출 >
                                  </form>
                              </td>
                           </tr>
                       </tbody>
                    </table>
                </td>
            </tr>
        </table>

        <script src="OfflineSave.js"></script>
    </body>
</html>

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

뜨거운 기사 태그

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

JavaScript로 문자열 문자를 교체하십시오 JavaScript로 문자열 문자를 교체하십시오 Mar 11, 2025 am 12:07 AM

JavaScript로 문자열 문자를 교체하십시오

사용자 정의 Google 검색 API 설정 자습서 사용자 정의 Google 검색 API 설정 자습서 Mar 04, 2025 am 01:06 AM

사용자 정의 Google 검색 API 설정 자습서

예제 색상 JSON 파일 예제 색상 JSON 파일 Mar 03, 2025 am 12:35 AM

예제 색상 JSON 파일

8 멋진 jQuery 페이지 레이아웃 플러그인 8 멋진 jQuery 페이지 레이아웃 플러그인 Mar 06, 2025 am 12:48 AM

8 멋진 jQuery 페이지 레이아웃 플러그인

자신의 Ajax 웹 응용 프로그램을 구축하십시오 자신의 Ajax 웹 응용 프로그램을 구축하십시오 Mar 09, 2025 am 12:11 AM

자신의 Ajax 웹 응용 프로그램을 구축하십시오

' this ' 자바 스크립트로? ' this ' 자바 스크립트로? Mar 04, 2025 am 01:15 AM

' this ' 자바 스크립트로?

소스 뷰어와의 jQuery 지식을 향상시킵니다 소스 뷰어와의 jQuery 지식을 향상시킵니다 Mar 05, 2025 am 12:54 AM

소스 뷰어와의 jQuery 지식을 향상시킵니다

모바일 개발을위한 10 개의 모바일 치트 시트 모바일 개발을위한 10 개의 모바일 치트 시트 Mar 05, 2025 am 12:43 AM

모바일 개발을위한 10 개의 모바일 치트 시트

See all articles