一个独具特色的主页将会在www海洋之中更加突出你的个性。应该说,在主页状态行中实现游走字幕只是一个非常小的应用,但javascript强大的主页创作能力,或许会给你一些其他方面的启迪。
随着internet的普及与发展,越来越多的人开始尝试自己制作主页。在浏览别人主页时,我们经常看到那些需要特别强调、提醒的文本,通常都是做成游走字幕的形式。能不能在我们自己编制的主页中加上这些效果呢?本文将介绍其实现方法。
一、了解javascript语言
javascript是netscape公司为了扩展netscapenavigator的功能而开发的一种紧凑的、基于对象的描述语言,通常用来开发客户机或服务器端的internet应用程序。javascript主要用于识别和响应某些用户事件,如页面浏览、文本输入、鼠标点击等,它能不经网络传输直接对上述事件进行回应。与java相比,javascript小巧、灵活、容易理解和使用;不需要声明变量类型;没有java的类和继承的概念;更不需要象java那样在客户机上运行前必须在服务器端进行编译。netscapenavigator2.0以上的浏览器都能解释执行那些直接嵌入在html文档内的javascript语句。
二、掌握settimeout()函数
javascript提供了一个很有用的函数settimeout(),它能在设定的时间之后,对某一事件作出反应。相当于其他高级语言中的定时器。
调用格式:
timeoutidκsettimeout(expression,msec)
参数说明:
timeoutid:一个仅供cleartimeout()终止事件用的标识
expression:字符表达式即对象属性
msec:毫秒数,表示多少毫秒以后事件动作
为了具体说明javascript的编程方法及settimeout()函数的使用,让我们先来看一个小程序。
ιhtmlλ//超文本文件开始
ιheadλ//超文本文件头开始
ιtitleλ时钟小程序ι/titleλ//超文本标题
ιscriptlanguageκ″javascript″λ//javascript开始
ι!--//注释标志
vartimeridκnull
vartimerrunningκfalse
//终止settimeout()定义的事件
functionstopclock(){
if(timerrunning)
cleartimeout(timerid)
timerrunningκfalse
}
//调用子过程
functionstartclock(){
//makesuretheclockisstopped
stopclock()
showtime()
}
//取出机器时间,并每秒钟显示一次
functionshowtime(){
varnowκnewdate()
varhoursκnow.gethours()
varminutesκnow.getminutes()
varsecondsκnow.getseconds()
vartimevalueκ″″+((hoursλ12)?hours-12:hours)//24小时制转化为12小时制
timevalue+κ((minutesι10)?″:0″:″:″)+minutes//小于10分时前面加“0”
timevalue+κ((secondsι10)?″:0″:″:″)+seconds//小于10秒时前面加“0”
timevalue+κ(hoursλκ12)?″p.m.″:″a.m.″//判断上、下午
document.clock.face.valueκtimevalue//命名
timeridκsettimeout(″showtime()″,1000)
//每1000毫秒即1秒执行一次
timerrunningκtrue
}
//--λ//注释标志
ι/scriptλ//javascript结束
ι/headλ//超文本文件头结束
//装入startclock()函数
ιbodyonloadκ″startclock()″λ//超文本正文主体开始
//在主页上创建一个用于显示时间的窗口
ιformnameκ″clock″onsubmitκ″0″λ//交互项元素开始
ιinputtypeκ″text″nameκ″face″sizeκ22valueκ″″λ//定义一个输入信息元素
ι/formλ//交互项元素结束
ι/bodyλ//超文本正文主体结束
ι/htmlλ//超文本文件结束
上例中整个html文件都用ιhtmlλ和ι/htmlλ括起来,javascript语句用ιscriptλ和ι/scriptλ括起来,它可以放在html文件中的任何地方,通常和窗口标题的起止标签ιtitleλι/titleλ一起放在文件头的起止标签ιheadλι/headλ内,由文件主体起止标签ιbodyλι/bodyλ中的语句调用。javascript的语法说明部分用html的注释符号ι!--和--λ括了起来,以避免不支持javascript的浏览器产生错误。注释的顺序为:先ιscriptλ,接着是注释的开头ι!--,然后是内容,再后是注释尾--λ,最后是ι/scriptλ。另外,javascript本身也可以注释,和c++与java一样,它的注释行符号为//,如本例所示。javascript中很多语法都和c相似,上述程序对于稍有点c基础的朋友一定不难理解。
三、实现游走字幕
在javascript中用window.status来控制状态行输出,如果能在程序的控制下,对状态行进行定时刷新,即可实现游走字幕的效果。所以,本程序实际上分两部分:动态生成字符串;定时重写状态行。本程序中所用的方法是:先在字幕内容前加上大于状态行长度的空格,循环递减空格并定时显示,即实现游走效果;当字幕运动到状态行最左端时,循环截取后面未显示的字幕内容,定时刷新;循环结束后,置空状态行,并设置下次循环初值。程序代码如下:
ιhtmlλ
ιheadλ
ιscriptlanguageκ″javascript″λ
ι!--beginningofwebmania/javascriptapplet-------------------
/*copyright(c)1996heyuhai&panggusong
allrightsreserved.
*/
functionscroll?status(seed)
{
varmsgκ″欢迎访问何雨海个人主页″;
//汉字之间空一格是为了使字幕运动到状态行的最左端时不至于出现乱字符
varoutκ″″;
varcκ1;
//seed值大于150时,空循环。因为状态行的长度都小于150
if(150ιseed){
seed--;
varcmdκ″scroll?status(″+seed+″)″;
timertwoκwindow.settimeout(cmd,100);
}
//字幕内容前的空格循环递减,并定时显示,实现字幕游走
elseif(seedικ150&&0ιseed){
for(cκ0;cιseed;c++){
out+κ″″;
}
out+κmsg;//循环赋值
seed--;//递减
varcmdκ″scroll?status(″+seed+″)″;
window.statusκout;//重写状态行
timertwoκwindow.settimeout(cmd,100);//定时0.1秒
}
elseif(seedικ0){
//当字模游走到状态行最左端时,循环截取未显示的部分,继续游走显示
if(-seedιmsg.length){
out+κmsg.substring(-seed,msg.length);
seed--;
varcmdκ″scroll?status(″+seed+″)″;
window.statusκout;
timertwoκwindow.settimeout(cmd,100);
}
else{
window.statusκ″″;//循环结束,置空状态行
timertwoκwindow.settimeout(″scroll?status(150)″,100);//设置下次循环初值
}
}
}
//--endofjavascriptcode---------λ//结束javascript调用
ι/scriptλ
ι/headλ
ιbodyonloadκ″timeroneκwindow.settimeout(′scroll?status(100)′,50);″λ//seed要大于状态行的长度,否则第一次显示时,不是从最左端而是从状态行左边第seed个字符处开始显示
.
.
.
ι/bodyλ
ι/htmlλ
javascript是自己编制主页不可缺少的、最理想的一种脚本语言,愿本文能抛砖引玉,启发您更美妙的构思。
--------------------------------------------------------------------------------
报刊名称:中国计算机报
期号:667
版名:编程维修
栏目:编程与维修
标题:在自制主页中实现游走字幕
副标题:
作者:
日期:1997-07-21
闽公网安备 35060202000074号