呵呵,技术多多,越看越喜欢......
JS Fans 的天堂,丝毫不输OutLook界面....

解决方案 »

  1.   

    看一些开源的有关是如何现实。以鱼不如以渔。csdn就不少呀
    -----------------------------------------------
    don't wrroied,be happy! 有问题[email protected]交流
      

  2.   

    要扒的话,HOTMAIL的LIVE邮箱,GMAIL的一并扒了吧,都比较NB
      

  3.   

    自己学吧,多想,多体会,多实践,一定要扎实
    其实这些代码的语法很简单
    但是难的是dhtml
    个人觉得看这些复杂代码会降低自己的自信
      

  4.   

    /*
    原来Yahoo的Javascript用了混淆器啊......
    超级难理解啊....这段就是里面很NB的transparent_attch技术,
    按一个钮,直接选文件....
    可惜混淆得乱七八糟的,没一句备注...谁看得懂哦....
    */
    function(){if(this.d.length==0){return;
    }var O=elt("Attach");
    var r="";
    var A="";
    var q=0;
    var c="";
    O.style.display="block";
    for(var W=0;
    W<this.d.length;
    W++){c=this.d[W];
    q=Te(c.byteSize);
    AY.J+=q-0;
    fileName=c.fileName;
    A=fileName+" ("+q+yP.AP+")";
    AY.j++;
    c.attachId="attach_id"+AY.j;
    var K=Yi("<div style='position:relative;' id='"+c.attachId+"'>",O);
    TE();
    K.innerHTML=Oa("tableIcon attachmentIcon",A,"remove",yP.FY)+"</div>";
    }tS();
    },C:["fileName","mimeType","byteSize","partId","mid","tnef","folderName","attachId","diskFileName"],j:function(q){for(var c=0,attachFieldnames=Qo.C;
    c<attachFieldnames.length;
    c++){this[attachFieldnames[c]]=q[c];
    }if(q[1]!=null){var W=this[Qo.C[1]].split("/");
    this.K=W[0];
    this.A=W[1];
    }}};
    Qo.j.prototype.O=function(){var o=new Array();
    for(var r=0,attachFieldnames=Qo.C;
    r<attachFieldnames.length;
    r++){QY.d(o,this[attachFieldnames[r]]);
    }return o;
    };
    function Vh(){return Qo;
    }function attach_init(v){var d=["<form id='upload_form' name='upload_form' style='position:absolute; ","action='./attachment' enctype='multipart/form-data' method='post' accept-charset='utf-8'> ","<input class=transparent_attach_btn "," title='",elt("btnTbl_Attach").title+"' ","onmouseover='kN(event, elt(\"btnTbl_Attach\"));' ","onmousedown='QJ(event, elt(\"btnTbl_Attach\"));' ","onmouseup='Q7(event, elt(\"btnTbl_Attach\"));' ","onmouseout='Z4(event, elt(\"btnTbl_Attach\"));' ","id='transparent_attach_btn' type='file' name='uploadfile' HIDEFOCUS='true' > ","</form>"];
    v.outerHTML+=d.join("");
    GY();
    }function GY(){var d=elt("transparent_attach_btn");
    var v=elt("btnTbl_Attach");
    if(!d||!v){return;
    }var C=d.offsetWidth-v.offsetWidth;
    d.style.clip="rect(auto auto auto "+C+"px)";
    d.style.left=(v.offsetLeft-C)+"px";
    BN();
    d.onchange=xQ;
    v.onclick=rx;
    }function AY(){if(Qo.N==null){Qo.s();
    }AY.J=0;
    AY.h=false;
    AY.j=0;
    AY.d=1;
    AY.v=new Array();
    AY.C=new Array();
    var I=elt("btnTbl_Attach");
    var s=elt("transparent_attach_btn");
    var l=elt("Attach");
    if(!s||!I){return;
    }var N=Yi("<div id='sizeAndLogo' style='position:absolute; top:3px; right:3px;'>",l);
    Yi("<span id='totalAttachedSizeArea' class='totalAttachedSizeAreaStyle'>",N);
    var n=i9();
    if(n.isBroadbandUser()){Yi('<IMG src="http://us.i1.yimg.com/us.yimg.com/i/us/pim/dclient/d/img/md5/9c6f90ccb8f09b18e55ca8836b132664_1.gif" style="border:0;">',N);
    }else{var X=Yi('<A href="'+yP.GZ+'" target="_blank">',N);
    Yi('<IMG src="http://us.i1.yimg.com/us.yimg.com/i/us/pim/dclient/d/img/md5/9c6f90ccb8f09b18e55ca8836b132664_1.gif" style="border:0;">',X);
    }tS(true);
    s.onchange=xQ;
    }function rx(){var d=i9();
    if(AY.J>=XD.g){d.HX.j((yP.Ri).toMessage("size="+XD.c+yP.U));
    return false;
    }else{if((Qo.v()+AY.d)>=XD.A5){d.HX.j(yP.Lp);
    return false;
    }else{if(AY.d>=Mv){d.HX.j(yP.RO);
    return false;
    }}}return true;
    }function xQ(){var J=elt("upload_form");
    var h=elt("transparent_attach_btn");
    var v=elt("Attach");
    if(v.style.display=="none"||v.style.display==""){v.style.display="block";
    }Mu=true;
    var I=(IL()==Uv.c)?"/":"\\";
    var s=h.value.split(I);
    var d=s[s.length-1];
    d=pX(d);
    if(R4(d)){J.reset();
    return;
    }AY.j++;
    var j="attach_id"+AY.j;
    var N=h.cloneNode(false);
    N.onchange=xQ;
    J.removeChild(h);
    J.appendChild(N);
    J.reset();
    AY.d++;
    AY.v[j]=h;
    rr();
    var C=document.createElement("div");
    C.style.position="relative";
    C.id=j;
    v.insertBefore(C,v.childNodes[0]);
    TE();
    C.innerHTML=Oa("busyTwirlIcon",yP.CP+" "+d,"cancel",yP.s)+"</div>";
    C.file_name=d;
    Hm();
    if(EI()){elt("transparent_attach_btn").style.display="none";
    }}function EI(){if((AY.J>=XD.g)||((Qo.v()+AY.d)>=XD.A5)||(AY.d>=Mv)){return true;
    }return false;
    }function Oa(C,J,h,v){var d=["<div class='",C,"'></div>","<div style='position:absolute;  top:2px; left:20px;'","<span class='attach_file_message_style'> ",J,"   </span>","<span class='textLink' id='"+h+"'","title='"+v+"'","onclick='k3(this);'>",v,"</span>"];
    return d.join(" ");
    }function k3(N){var j=elt("transparent_attach_btn");
    var d=elt("Attach");
    var v=N.parentNode.parentNode;
    d.removeChild(v);
    var C=v.id;
    var J=Qo.n(C);
    switch(N.id){case "remove":j.style.display="inline";
    case "cancel_send_anyway":Xf(C);
    break;
    case "cancel":j.style.display="inline";
    AY.h=false;
    hB(C);
    break;
    case "ok":break;
    case "skip":delete AY.C[C];
    break;
    case "send_anyway":if(J){d.insertBefore(v,d.childNodes[0]);
    lz(J.fileName,Te(J.byteSize),C);
    return;
    }else{break;
    }case "retry":d.insertBefore(v,d.childNodes[0]);
    v.innerHTML=Oa("busyTwirlIcon",yP.CP+" "+v.file_name,"cancel",yP.s)+"</div>";
    gI(C);
    return;
    default:return;
    }var h=d.childNodes.length;
    if(!QV.d){h-=1;
    }if(h<=1){d.style.display="none";
    }TE();
    Hm();
    }function Xf(J){var v=new Array();
    var C=0;
    for(var d=0;
    d<Qo.d.length;
    d++){if(Qo.d[d].attachId==J){AY.J-=Te(Qo.d[d].byteSize);
    Mu=true;
    continue;
    }else{v[C++]=Qo.d[d];
    }}Qo.d=v;
    tS();
    }function tS(v){var d=v?0:AY.J;
    elt("totalAttachedSizeArea").innerText=(yP.Wr).toMessage("total_size="+d,"limit_size="+XD.c+yP.U);
    }function R4(v){for(var d=0;
    d<Qo.d.length;
    d++){if(Qo.d[d].fileName==v){return true;
    }}for(var h in AY.v){var C=elt(h);
    if(C&&C.file_name==v){return true;
    }}for(var j in AY.C){var J=elt(j);
    if(J&&J.file_name==v){return true;
    }}return false;
    }function TE(){if(QV.d){var d=elt("Attach");
    var v=d.childNodes.length;
    if(v>=6){d.style.height=78;
    }else{d.style.height=(v-2)*17+30;
    }Hm();
    }}function BN(){var d=elt("upload_form");
    var C=elt("transparent_attach_btn");
    Yi("<input type='hidden' name='_charset_'>",d);
    Yi("<input type='hidden' name='resulturl'>",d);
    var v=kPartner.path.proxy+"/ya/upload";
    d.action=v;
    d.target="hidden_target_upload_iframe";
    }function un(){return(AY.h||(AY.d>1));
    }function vH(d){var v=AY.v[d];
    if(v){AY.C[d]=v;
    AY.d--;
    delete AY.v[d];
    }}function hB(d){if(delete AY.v[d]){AY.d--;
    }else{delete AY.C[d];
    }}function rr(){if(AY.h){setTimeout("rr()",30000);
    return;
    }var d=elt("upload_form");
    var J=elt("transparent_attach_btn");
    for(var v in AY.v){var C=AY.v[v];
    if(!C){continue;
    }d.resulturl.value="/dc/attach.html?attachId="+v;
    d.action=kPartner.path.proxy+"/ya/upload?resulturl="+encodeURIComponent(d.resulturl.value);
    d.removeChild(J);
    d.appendChild(C);
    setTimeout("Nf()",0);
    AY.h=true;
    vH(v);
    return;
    }}function Nf(){var d=elt("upload_form");
    var v=elt("transparent_attach_btn");
    d.submit();
    var C=v.cloneNode(false);
    C.onchange=xQ;
    d.removeChild(v);
    d.appendChild(C);
    d.reset();
    }function gI(d){var v=AY.C[d];
    if(v){AY.v[d]=v;
    AY.d++;
    delete AY.C[d];
    rr();
    }}function Ta(C,N){var h=Te(C[2]);
    var d=C[C.length-2];
    var s=elt("Attach");
    var J=elt(d);
    AY.h=false;
    if(!J){rr();
    return;
    }if(lU(h,d)){return;
    }var v=J.file_name;
    C[0]=v;
    switch(N){case "uploadAVInternalError":case "uploadAVError":case "uploadAVNotScannable":case "uploadAVServerDown":delete AY.C[d];
    Qo.J(C);
    AU(v,yP.Zu,d,"send_anyway",yP.R1,"cancel_send_anyway",yP.s);
    break;
    case "uploadAVNoVirus":case "uploadAVCleaned":delete AY.C[d];
    Qo.J(C);
    lz(v,h,d);
    break;
    case "uploadFileSizeError":var j=cG();
    q1(j,d);
    yT();
    TE();
    break;
    case "uploadNoFileError":AU(v,yP.DW,d,"skip",yP.CB);
    break;
    case "uploadAVCannotClean":case "uploadAVHasVirus":AU(v,yP.iK,d,"ok",yP.K);
    break;
    case "uploadPartialFileError":case "uploadInternalError":case "uploadAuthError":default:AU(v,yP.DW,d,"skip",yP.CB,"retry",yP.mP);
    }rr();
    TE();
    Hm();
    if(!EI()){elt("transparent_attach_btn").style.display="inline";
    }}function lU(d,C){if(!ZL(d)){return false;
    }d-=0;
    if((AY.J+d)>=XD.g){var v=cG();
    q1(v,C);
    yT();
    TE();
    return true;
    }return false;
    }
      

  5.   

    混淆器,很简单,就是把
    function UploadAction(filename,fileType,fileSize){}
    /*
    上面代码很容易读吧,变为:
    */
    function ad(aa,ab,ac){}同样还是原代码,逻辑依然通顺,你还看得懂不................?!这就是Javascript保护自己的方法.............
      

  6.   

    用firefox,不过,用了混淆器,看不懂!!!!!!
      

  7.   

    还是放弃去扒别人的代码,要是真想得到一个,还不如自己去仿造,如果个人认为要走捷径,那么仿造的时间可能远远少于自己弄明白Yahoo的js内幕!我们要耻于偷盗,用于借鉴优点/亮点