我的简史——Web应用开发之路(二)

  原文再续,书接上一回。昨天说到我第一次花心思去研究的Web应用技术,然后卖了个关子。那么,究竟那样技术是什么呢?上天的安排真的是很奇妙,那技术正是我现在的看家本领——JavaScript。

  • 初识JS

  那次对JS的研究纯粹是因为自己喜欢上人家BLOG上的一个特效——时钟,然而人家写的算法却是有问题的——也不知道是不是博主copy原作代码的时候把里面的关键部分修改了。不过那时候我也没有再去找原作的实现函数——也是因为不知道怎么去找(当时无视了代码中的英文注释了=。=),直接把那个实现帮过来就开始研究究竟哪里出错了。说来也够牛的,我一个完全不知道JS语法的家伙,只是有点C/C++的底子,外加维持在高中水平数学技巧,居然给我看出了圆周算法中的一个小BUG,然后理所当然的把它修正了。之后,兴奋的我又继续琢磨,那么外围旋转的星期几的那串英文是不是也可以修改呢?于是又瞄上了一段代码——BINGO!居然又中了!然后,在自己一再的私欲下,我在外围旋转文字外,又加了一层反向旋转的文字。那个时候我可高兴了,决定把这段代码作好注释,让后人好好学习一下^0^!就是这样,我完成了我的第一次,然后遗留下这么一段代码:

<SCRIPT language=JavaScript> dCol='66FF00';//date colour. fCol='FF6600';//face colour. sCol='660099';//seconds colour. mCol='3366FF';//minutes colour. hCol='569923';//hours colour. gCol='0099FF';//第三行文字 colour. ClockHeight=40;//钟高. ClockWidth=40;//钟宽. ClockFromMouseY=80;//钟中心离MOUSE嘅纵坐标. ClockFromMouseX=80;//钟中心离MOUSE嘅横坐标. //Alter nothing below! Alignments will be lost!(E条警告可以当渠傻嘅) d=new Array("SUNDAY","MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY"); //创建日期数组. m=new Array("JANUARY","FEBRUARY","MARCH","APRIL","MAY","JUNE","JULY","AUGUST","SEPTEMBER","OCTOBER","NOVEMBER","DECEMBER"); //创建月份数组. date=new Date();//获取日期. day=date.getDate(); year=date.getYear(); if (year < 2000) year=year+1900; TodaysDate=" "+d[date.getDay()]+" "+day+" "+m[date.getMonth()]+" "+year;//(日期栏显示格式) D=TodaysDate.split('');//数组间隔. H='...';//时、分、秒针样式 H=H.split(''); M='....'; M=M.split(''); S='.....'; S=S.split(''); T='屏 闭 那 段 会 令 其 他 人 困 扰 的 文 字 ';//字符串.(可更换你想讲嘅嘢嘅地方...支持中文...此部分为我自制...大家亦都可以学我加多几行...不过可能D人会更加烦...呵呵...) T=T.split(''); Face='1 2 3 4 5 6 7 8 9 10 11 12';//钟面. font='Arial';//钟面字体.(想换字体就换''号入面嘅嘢,例:font='宋体',但初哥最好换个变量储存...) size=3;//字体大小. speed=0.6;//拉动时速. ns=(document.layers);//好似浏览器类型唔同...有唔同算法...NS之喺以前嗰同IE争得好劲嗰只Netscape. ie=(document.all); Face=Face.split(' '); n=Face.length; a=size*10; ymouse=0; xmouse=0; scrll=0; props="<font face="+font+" size="+size+" color="+fCol+"><B>"; props2="<font face="+font+" size="+size+" color="+dCol+"><B>"; props3="<font face="+font+" size="+size+" color="+gCol+"><B>"; Split=360/n; Dsplit=360/D.length; Tsplit=360/T.length; HandHeight=ClockHeight/4.5 HandWidth=ClockWidth/4.5 HandY=-7; HandX=7; scrll=0; step=0.015;//顺时针转速. rstep=0.03;//逆时针转速 currStep=0; rigStep=0;//以下为层算法. y=new Array();x=new Array();Y=new Array();X=new Array(); for (i=0; i < n; i++){y[i]=0;x[i]=0;Y[i]=0;X[i]=0} Dy=new Array();Dx=new Array();DY=new Array();DX=new Array(); for (i=0; i < D.length; i++){Dy[i]=0;Dx[i]=0;DY[i]=0;DX[i]=0} Ty=new Array();Tx=new Array();TY=new Array();TX=new Array(); for (i=0; i < T.length; i++){Ty[i]=0;Tx[i]=0;TY[i]=0;TX[i]=0} if (ns){ for (i=0; i < T.length; i++) document.write('<layer name="nsDate'+i+'" top=0 left=0 height='+a+' width='+a+'><center><b>'+props3+T[i]+'</b></font></center></layer>'); for (i=0; i < D.length; i++) document.write('<layer name="nsDate'+i+'" top=0 left=0 height='+a+' width='+a+'><center>'+props2+D[i]+'</font></center></layer>'); for (i=0; i < n; i++) document.write('<layer name="nsFace'+i+'" top=0 left=0 height='+a+' width='+a+'><center>'+props+Face[i]+'</font></center></layer>'); for (i=0; i < S.length; i++) document.write('<layer name=nsSeconds'+i+' top=0 left=0 width=15 height=15><font face=Arial size=3 color='+sCol+'><center><b>'+S[i]+'</b></center></font></layer>'); for (i=0; i < M.length; i++) document.write('<layer name=nsMinutes'+i+' top=0 left=0 width=15 height=15><font face=Arial size=3 color='+mCol+'><center><b>'+M[i]+'</b></center></font></layer>'); for (i=0; i < H.length; i++) document.write('<layer name=nsHours'+i+' top=0 left=0 width=15 height=15><font face=Arial size=3 color='+hCol+'><center><b>'+H[i]+'</b></center></font></layer>'); } if (ie){ document.write('<div id="Ot" style="position:absolute;top:0px;left:0px"><div style="position:relative">'); for (i=0; i < T.length; i++) document.write('<div id="Text" style="position:absolute;top:0px;left:0;height:'+a+';width:'+a+';text-align:center">'+props3+T[i]+'</B></font></div>'); document.write('</div></div>'); document.write('<div id="Od" style="position:absolute;top:0px;left:0px"><div style="position:relative">'); for (i=0; i < D.length; i++) document.write('<div id="ieDate" style="position:absolute;top:0px;left:0;height:'+a+';width:'+a+';text-align:center">'+props2+D[i]+'</B></font></div>'); document.write('</div></div>'); document.write('<div id="Of" style="position:absolute;top:0px;left:0px"><div style="position:relative">'); for (i=0; i < n; i++) document.write('<div id="ieFace" style="position:absolute;top:0px;left:0;height:'+a+';width:'+a+';text-align:center">'+props+Face[i]+'</B></font></div>'); document.write('</div></div>'); document.write('<div id="Oh" style="position:absolute;top:0px;left:0px"><div style="position:relative">'); for (i=0; i < H.length; i++) document.write('<div id="ieHours" style="position:absolute;width:16px;height:16px;font-family:Arial;font-size:16px;color:'+hCol+';text-align:center;font-weight:bold">'+H[i]+'</div>'); document.write('</div></div>'); document.write('<div id="Om" style="position:absolute;top:0px;left:0px"><div style="position:relative">'); for (i=0; i < M.length; i++) document.write('<div id="ieMinutes" style="position:absolute;width:16px;height:16px;font-family:Arial;font-size:16px;color:'+mCol+';text-align:center;font-weight:bold">'+M[i]+'</div>'); document.write('</div></div>') document.write('<div id="Os" style="position:absolute;top:0px;left:0px"><div style="position:relative">'); for (i=0; i < S.length; i++) document.write('<div id="ieSeconds" style="position:absolute;width:16px;height:16px;font-family:Arial;font-size:16px;color:'+sCol+';text-align:center;font-weight:bold">'+S[i]+'</div>'); document.write('</div></div>') } (ns)?window.captureEvents(Event.MOUSEMOVE):0; function Mouse(evnt){ ymouse = (ns)?evnt.pageY+ClockFromMouseY-(window.pageYOffset):event.y+ClockFromMouseY; xmouse = (ns)?evnt.pageX+ClockFromMouseX:event.x+ClockFromMouseX; } (ns)?window.onMouseMove=Mouse:document.onmousemove=Mouse; function ClockAndAssign(){ time = new Date (); secs = time.getSeconds(); sec = -1.57 + Math.PI * secs/30; mins = time.getMinutes(); min = -1.57 + Math.PI * mins/30; hr = time.getHours(); hrs = -1.57 + Math.PI * hr/6+Math.PI*parseInt(time.getMinutes())/360; if (ie){ Ot.style.top=window.document.body.scrollTop; Od.style.top=window.document.body.scrollTop; Of.style.top=window.document.body.scrollTop; Oh.style.top=window.document.body.scrollTop; Om.style.top=window.document.body.scrollTop; Os.style.top=window.document.body.scrollTop; } for (i=0; i < n; i++){ var F=(ns)?document.layers['nsFace'+i]:ieFace[i].style; F.top=y[i] + ClockHeight*Math.sin(-1.0471 + i*Split*Math.PI/180)+scrll; F.left=x[i] + ClockWidth*Math.cos(-1.0471 + i*Split*Math.PI/180); } for (i=0; i < H.length; i++){ var HL=(ns)?document.layers['nsHours'+i]:ieHours[i].style; HL.top=y[i]+HandY+(i*HandHeight)*Math.sin(hrs)+scrll; HL.left=x[i]+HandX+(i*HandWidth)*Math.cos(hrs); } for (i=0; i < M.length; i++){ var ML=(ns)?document.layers['nsMinutes'+i]:ieMinutes[i].style; ML.top=y[i]+HandY+(i*HandHeight)*Math.sin(min)+scrll; ML.left=x[i]+HandX+(i*HandWidth)*Math.cos(min); } for (i=0; i < S.length; i++){ var SL=(ns)?document.layers['nsSeconds'+i]:ieSeconds[i].style; SL.top=y[i]+HandY+(i*HandHeight)*Math.sin(sec)+scrll; SL.left=x[i]+HandX+(i*HandWidth)*Math.cos(sec); } for (i=0; i < D.length; i++){ var DL=(ns)?document.layers['nsDate'+i]:ieDate[i].style; DL.top=Dy[i] + ClockHeight*1.5*Math.sin(rigStep + i*Dsplit*Math.PI/180)+scrll; DL.left=Dx[i] + ClockWidth*1.5*Math.cos(rigStep + i*Dsplit*Math.PI/180); } for (i=0; i < T.length; i++){ var TL=(ns)?document.layers['nsText'+i]:Text[i].style; TL.top=Ty[i] + ClockHeight*2*Math.sin(currStep+i*Tsplit*Math.PI/180)+scrll; TL.left=Tx[i] + ClockWidth*2*Math.cos(currStep+i*Tsplit*Math.PI/180); } currStep-=step; rigStep+=rstep; } function Delay(){ scrll=(ns)?window.pageYOffset:0; Ty[0]=Math.round(TY[0]+=((ymouse)-TY[0])*speed); Tx[0]=Math.round(TX[0]+=((xmouse)-TX[0])*speed); for (i=1; i < T.length; i++){ Ty[i]=Math.round(TY[i]+=(Ty[i-1]-TY[i])*speed); Tx[i]=Math.round(TX[i]+=(Tx[i-1]-TX[i])*speed); } Dy[0]=Math.round(DY[0]+=((ymouse)-DY[0])*speed); Dx[0]=Math.round(DX[0]+=((xmouse)-DX[0])*speed); for (i=1; i < D.length; i++){ Dy[i]=Math.round(DY[i]+=(Dy[i-1]-DY[i])*speed); Dx[i]=Math.round(DX[i]+=(Dx[i-1]-DX[i])*speed); } y[0]=Math.round(Y[0]+=((ymouse)-Y[0])*speed); x[0]=Math.round(X[0]+=((xmouse)-X[0])*speed); for (i=1; i < n; i++){ y[i]=Math.round(Y[i]+=(y[i-1]-Y[i])*speed); x[i]=Math.round(X[i]+=(x[i-1]-X[i])*speed); }//以上为实际转动运行算法. ClockAndAssign(); setTimeout('Delay()',20); } if (ns||ie)window.onload=Delay; </SCRIPT>

  由于当时发布的时候是针对给朋友看的,所以注释中有很多粤语。按现在的标准看这一段代码,肯定是不及格的。因为兼容性真不大好,放到FF上就跑不了了。但是对于当时的我来说,这段东东可是宝贵的经验呢,还留下了豪情壮语说以后有时间一定要好好研究一下——实际上呢,除了搞上述代码的时候学会了几个鼠标右键控制之类的代码,大学往后的日子都没有再碰Web方面的技术了(原因只有一个,我不喜欢JAVA=。=)。

  如前所述,之后我就没怎么再看JS了。不过在那段时间接触的另一套语言与开发工具对我来说可是有深远的影响呢!

 

  不过今天暂且休息一下,欲知后事如何,请听下回分解。呵呵~

你可能感兴趣的:(我的简史——Web应用开发之路(二))