一直以来对于分清客户端脚本和服务器端脚本显得不是很清楚。更不必说是理解深刻了。现在就自己的一点点想法试着描述一下,以便大家来指正。
掌握网页编程主要是对于服务器端脚本和客户端脚本的理解。大多数人极为重视服务器端的脚本。却忽视了丰富多彩的客户端脚本。因为客户端脚本能完成服务器端脚本所不能完成的功能。我想主要表现在以下几个方面:
(2)打开一个新的浏览窗口(window对象)
(3)在窗口之间进行通信
(4)播放简单的动画
(5)写定制的客户端验证脚本
我想可能还有其他功能。个人以为客户端端脚本的功能必将不断被加强和扩展,因为这符合现在不断强调系统中个体智能的趋势。进入ASP.NET时代,我们对于服务器端脚本的开发显得更加得心应手,但是对于客户端脚本的编写似乎与ASP还没有很大的改变。那么到底如何来编写客户端脚本呢?换而言之,就是如何发送脚本到浏览器?下面我将列举一些方法:
一、直接在ASPX文件中写客户端脚本:
function showalert(){
alert("Hello");
}
</script>
这也是ASP中常用的Javacript的写法。我们可以看到这是一个弹出消息窗口的函数。一般而言他放在文件的<head>处,不易放在<form>之间。
二、用服务器脚本写客户端脚本
注意,这种方法对于效率显然比较低。但是在ASP中,对于服务器端与客户端脚本的交互具有很大的意义。在ASP.NET中类似。
sub showalert()
with Response
.Write("<scr"&"ipt language=""Javascript"">"&System,Enviornment.NewLine)
.Write("Alert('Hello!');"&System,Enviornment.NewLine)
.Write("</scr"&"ipt>")
end with
end sub
</script>
我们看到这里虽然没有把服务器端的信息(如SessionID)传替给客户端,但是依然能明显地看出如何用服务器端脚本写客户端脚本。
三、用后台代码写客户端脚本
这是ASP.NET提供的机制。主要是用对象的Attribute这个属性来完成。比如说对于Button1的click事件就可以这么写:
四、使用RegisterClientBlock()写客户端脚本
这是进入ASP.NET之后新加入的功能。下面来示范如何将服务器端的变量传递给客户端脚本。
Sub Page_Load( sender as Object,e as EventArgs)
Dim s as String="<script language=JavaScript>"
s+="var session='"&Session.SessionID&"';"
s+="</scipt>"
RegisterClientScriptBlock("script",s)
End sub
</script>
这里的原理是这样的:SessionID是服务器端脚本,先写入客户端脚本字符串中。然后用RegisterClientScriptBlock将脚本写在输出流中隐藏的_VIEWSTATE控件之后。最后在客户端读入脚本,得到SessionID变量值。从而完成客户端脚本和服务器端脚本的交互。
总之,客户端脚本是很丰富多彩的,必须认真深入的学习才行。
相关参考:
http://www.loveyuki.com/blogview.asp?logID=173
http://www.moon-soft.com/doc/44851.htm