>  기사  >  웹 프론트엔드  >  OfflineSave 오프라인 저장 코드 재출시 지침_javascript 기술

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

WBOY
WBOY원래의
2016-05-16 19:12:551284검색

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

1 요소의 ID 속성만 감지합니다.


2. style="display:none">

3.
추가

4. OfflineSave
예:


ToolsBarStyle은 CSS 클래스 속성이고 컨테이너는 선택, 입력, 버튼을 포함한 div입니다. >
참고:
사례 1:

type=submit value=submit>

이 경우 구성요소는 서버 생존 상태를 자동으로 감지할 수 있으며, 서버에 연결할 수 없으면
docheck 기능도 정상적으로 작동할 수 있습니다.

사례 2:

=submit onclick="myform.submit()">

이 경우 구성요소는 제출 이벤트를 가로챌 수 없으며 서버 생존 상태를 자동으로 감지할 수도 없습니다.

제안: 폼에서 데이터 감지 시 폼 태그의 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 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="
";
    hc+=" ";
    hc+="";
    hc+=" ";
    hc+="";
    hc+="  ";
    hc+="
";
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 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            if(os_dg(id).item(i).type!="button"&&os_dg(id).item(i).id!= "os_" id "_Select")
               if(v                   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           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.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        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                     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
复主代码 代码如下:


    
        离线保存
        
        <스타일> .userData {behavior:url(#default#userdata);}
    
        
    
    
        
        
            
                
            
            
                
            
        
Ajax演示程序(J2EE)
                    

                    

                    服务端:JDK1.4 TomCAT4.1 Hibernate3 MSSQL Server2000(SP4) DWR1.0

                    客户端:JavaScript(CallBack) VML 
                    

                    编写人:富深协通常州研发中心 姜泉


                    
                        
                        
                            
                                
                           
                       
                    

                            离线数据保存(仅限IE浏览器5.0版本以上)

                                        
                                            
                                                
                                                
                                                
                                            
                                            
                                                
                                                
                                                
                                         
                                     
名称
                                                
公司全称 客户代码
分类 性别 增加日期
<입력 유형=제출 값=제출 >
                                  

                              

                


        
    


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