转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 站长学院 >> Web开发 >> 正文
《VBScript制作实例》笔记         ★★★★

《VBScript制作实例》笔记

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1380 更新时间:2009/4/23 11:22:48
=========== 添加vbscript代码的三种方法 ============
假设已有一个名为btnSubmit的按钮,添加vbscript代码的方法有三种:

第一种,最常用:
<script language="VBScript">
private sub btnSubmit_OnClick
msgbox("OK!")
end sub
</script>

第二种,使用For/Event属性:
<script language="VBScript" for="btnSubmit" event="OnClick">
msgbox("OK!")
</script>

第三种:可以不必单独为一个事件生成一个事件处理程序,只要把事件处理的过程当作元素标记中的一个属性就可以了。需要注意,事件的处理过程的值应该用单引号括起来,而不像其他的属性值是用双引号括起来的。
<input type="submit" name="btnSubmit" value="按钮" onclick='msgbox"OK!"' language="vbscript">

========On Error Resume Next语句=========
若不使用 On Error Resume Next 语句,发生的任何运行时错误都将是致命的,即,显示错误信息并终止运行。
On Error Resume Next 会使程序从紧随产生错误的语句之后的语句继续执行,或是从紧随最近一次调用过程(该过程含有 On Error Resume Next 语句)的语句继续运行。这个语句可以不顾运行时的错误,继续执行程序,之后您可以在过程内部建立错误处理例程。所以,如果希望在例程中进行内部错误处理,则应在每一个调用的例程中执行 On Error Resume Next 语句。

==========VBScript中的错误处理功能============
严格地讲,VBScript中的错误处理功能是比较弱的,当错误发生时,它没有办法直接调用错误处理程序,它发生错误的时候并没有产生中断或提示信息的机制。在Visual Basic中,错误发生的时候可以利用On Error Goto...的语句来进行错误处理,当错误发生时,程序会自动跳转到用Goto后面的标号指示的代码处。可是VBScript中不允许这样使用。
但是利用On Error Resume Next语句,还是可以实现某种程度的错误捕捉功能,只不过所有的错误陷阱要么必须在线处理,要么只能报告程序中出现的最后一个错误。下面给出了VBScript的错误处理基本框架。
Sub MySub()
On Error Resume Next
........
'在线处理
if Err.Number=? then
........
end if
'报告脚本遇到的上一个错误的信息
if Err.Number<>0 then
MsgBox Err.Description
end if
End Sub
注意,当使用On Error Resume Next语句后,除了最后一个错误,前面发生过的错误都已经被清除了,所以无法知道发生过的所有错误。为了能够及时处理,建议采用在线处理方法。

============Err对象的Raise方法==========
Err对象的Raise方法用于引发特定的错误。
可以用下面的程序显示错误的描述

On Error Resume Next
Err.Raise 6 '产生溢出错误。
MsgBox ("Error # " & CStr(Err.Number) & " " & Err.Description)
Err.Clear '清除错误。

========ActiveX==========
ActiveX是使Web页面丰富多彩的好方法,虽然HTML控件提供了基本的可视化操作(如按钮等),但却缺乏那些用户已经熟悉的可视化功能,而通过加入一些通用的(或者自己开发的)ActiveX控件,用户就能获得常见的计算机应用程序的感觉。用<object>标签使用ActiveX控件。id属性指定控件的名字,然后是ActiveX控件的ID号。如果浏览者的客户机上没有该控件,就要用CodeBase指定下载这一控件的源站点位置,如http://www.mysite.com/controls/mycontrol.ocx,除了指明控件的扩展名为.ocx以外,不需要提供别的什么信息。接下来是用<param>标记添加参数。一个典型的程序段如下:
<object id="objUserActiveX" classid="clsid:7823A620-9DD9-11CF-A662-00AA00C066D2">
<param name="..." value="...">
<param name="..." value="...">
</object>
如果开发者不想让浏览者知道其<param>标记中的参数,该内容会被编码,然后以data属性写入<object>标记,如:
<object id="objUserActiveX" classid="clsid:7823A620-9DD9-11CF-A662-00AA00C066D2" data="..........">

==========FileSystemObject对象=============

FileSystemObject (FSO) 对象模式,允许对大量的属性、方法和事件,使用较熟悉的 object.method 语法,来处理文件夹和文件。
FSO 对象模式使文件处理变得很容易。在处理文件时,主要的目标是以易于访问的格式把数据存储在有效的空间和资源中。这就要求能够创建文件,插入和改变数据,以及输出(读取)数据。因为把数据存储在数据库中,如 Access 或 SQL 服务器,会给应用程序增加很大的开销,所以把数据存储在二进制或文本文件中可能是最有效的解决方案。可能不希望有该开销,或者数据访问要求可能不需要与功能完备的数据库相关联的所有额外功能。
FSO 对象模式包含在 Scripting 类型库中,该库位于 Scrrun.dll 文件中。因而,要使用 FSO 对象模式,必须把 Scrrun.dll 放在 Web 服务器的适当系统目录中。
在 VBScript 中,使用下面的代码来创建 FileSystemObject 的一个实例:

Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")

FileSystemObject 对象模式中的某些功能是多余的。例如,可以用 FileSystemObject 对象的 CopyFile 方法,也可以用 File 对象的 Copy 方法来复制文件。这两种方法功能是相同的;两种方法能使编程更灵活。

要访问现有文件,则使用 FileSystemObject 对象中的GetFile
方法:

Dim fso, f1
Set fso = CreateObject("Scripting.FileSystemObject")
Set f1 = fso.GetFile("c:\test.txt")

一旦有了对象的句柄,就可以访问它的属性。要找出最后一次修改文件的时间,则使用下面的 VBScript 语法:

Response.Write "File last modified: " & f1.DateLastModified

创建空文本文件的方法是用 CreateTextFile 方法。 下面的示例示范了在 VBScript 中如何用这种方法来创建文本文件:

Dim fso, f1
Set fso = CreateObject("Scripting.FileSystemObject")
Set f1 = fso.CreateTextFile("c:\testfile.txt", True)

要打开现有的文件,则使用 FileSystemObject 对象的 OpenTextFile 方法。
要写数据到打开的文本文件,则根据下表所述任务使用 TextStream 对象的 Write、WriteLine 或 WriteBlankLines 方法。

下面的 VBScript 例子示范了如何打开文件,并向文件添加数据,然后关闭文件:

Sub CreateFile()
Dim fso, tf
Set fso = CreateObject("Scripting.FileSystemObject")
Set tf = fso.CreateTextFile("c:\testfile.txt", True)
' 写一行,并且带有新行字符。
tf.WriteLine("Testing 1, 2, 3.")
' 向文件写三个新行字符。
tf.WriteBlankLines(3)
' 写一行。
tf.Write ("This is a test.")
tf.Close
End Sub

要从文本文件读取数据,则使用 Read、ReadLine 或 ReadAll 方法。下表描述了不同的任务应使用哪种方法。

如果使用 Read 或 ReadLine 方法,并且想跳过数据的特殊部分,则使用 Skip 或 SkipLine 方法。read 方法的结果文本存在一个字符串中,该字符串可以显示在一个控件中,也可以用字符串函数(如 Left、Right 和 Mid)来分析,连接等等。

下面的 VBScript 示例示范了如何打开文件,和如何写数据到文件中并从文件读取数据:

Sub ReadFiles
Dim fso, f1, ts, s
Const ForReading = 1
Set fso = CreateObject("Scripting.FileSystemObject")
Set f1 = fso.CreateTextFile("c:\testfile.txt", True)
' 写一行。
Response.Write "Writing file <br>"
f1.WriteLine "Hello World"
f1.WriteBlankLines(1)
f1.Close
' 读取文件的内容。
Response.Write "Reading file <br>"
Set ts = fso.OpenTextFile("c:\testfile.txt", ForReading)
s = ts.ReadLine
Response.Write "File contents = '" & s & "'"
ts.Close
End Sub

==============“Cookie”技术=============

术语“Cookie”表示的是赋给客户应用程序的字符串。“Cookie”一词来源于“magic cookie”UNIX编程概念,有时又被叫做“记号”(token)。一般来说,使用“记号”这个术语对国人来说,要比“Cookie”一词更容易理解一些。
Cookie是一个字符串,一般包含许多组变量名及变量的值,各组名和值之间用分号分隔,并且分号后还跟一个空格,变量名与变量值之间用等号分隔,一个典型的Cookie字串如下:
value1=100; value2=good; sale50
用Document对象的Cookie属性返回当前的Cookie字符串。
用document.Cookie="value1=100"的方式为Cookie赋值,如果Cookie中有这个变量,将用新值替换,如果Cookie中没有这个变量,就会为它创建一个变量。

以上的Cookie技术将变量及变量值存储在内存中,而不是硬盘中。所有的页面共用一个Cookie空间,如果页面A与页面B分别在Cookie中写入了数据,则无论在哪个页面中用document.cookie都可以显示出各页面所有的Cookie数据。只要有一个IE窗口打开就不会丢失Cookie,一旦所有的IE窗口都关闭,则所有的Cookie都被清除。

下面是我自己编写的读取Cookie变量的函数。

<script language="VBScript">
function ReadCookie(pCook)
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'本函数用来读取Cookie中的数据。
'流程:先删去Cookie中pCook变量前面的字串,再删去pCook变量后面的字串,就是pCook的值。
'输入:要读取的变量名。
'输出:该变量名的值。如果没有该变量的值,为其赋初值。
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
dim whereis_pCook '要查找的pCook标记名在Cookie中的起始位置
dim howlong_pCook '要查找的pCook标记名的长度
dim howlong_cookie '整个Cookie的长度
dim whereis_FenHao '查找endstring中的分号(;)的起始位置
dim endstring '存放临时字串,该字串经处理最后得到pCook的值

whereis_pCook = Instr(Document.Cookie,pCook)
if whereis_pCook = 0 then
'如果当前Cookie中没有该pCook值,就为其赋初值
select case pCook
case "value1"
document.Cookie="value1=100"
endstring="100"
case "value2"
document.Cookie="value2=good"
endstring="good"
case "value3"
document.Cookie="value3=sale50"
endstring="sale50"
end select
else
howlong_pCook = len(pCook)
howlong_cookie=len(document.cookie)
'从Cookie中pCook的值开始到Cookie最后的字串。
'要注意,Cookie在各值之间用分号分隔,并且分号后还跟一个空格,所以下面的语句中有“+1”
'另外,各变量名与变量之间用等号隔,所以下面的语句中有“-1”
'当然,以上两个量相互抵消,但为了更好地理解本语句,故仍保留
endstring = right(document.cookie,howlong_cookie - whereis_pCook + 1 - howlong_pCook - 1)
whereis_FenHao=instr(endstring,";")
'如果没有找到分号,说明此变量是最后一个,所以endstring就是最终的结果;
'如果找到分号,就取分号前面的字串,得到最终结果。
if whereis_FenHao <> 0 then
endstring=left(endstring,whereis_FenHao - 1)
end if
end if
ReadCookie=endstring
end function
</script>

==========日历控件============
操作系统:Windows2000 Professional
在FrontPage2000下名为“Calendar控件9.0”,classid="clsid:8E27C92B-1264-101C-8A2F-040224009C02"
可以用Calendar.year,Calendar.month,Calendar.day调用该控件的年月日值,当日历中改变年月日时分别触发Calendar_NewYear(),Calendar_NewMonth(),Calendar_NewDay()事件。
要注意,在下拉列表中选择了年或月后,Calendar.year,Calendar.month,Calendar.day三个值均会被清零。

=========关于VB的颜色常数============
在VBScript中使用VBS的颜色常数会出现意想不到的颜色,比如document.bgcolor=vbYellow
不会将页面背景显示成黄色,而是淡蓝色。
原因在于VBS的颜色常数表示方法与HTML中颜色的表示方法不同,VBS的颜色常数vbYellow的机内值是"hffff",VBS的本意是要它表示值为"ffff00"的颜色,但因为常数的机内值没有写成6位十六进制数,所以HTML会将其解释为"00ffff",导致出错。
关于VBS的颜色常数在页面中实际显示的颜色可以在FrontPage中实验。在页面属性中选背景颜色/其它颜色,在值中直接填入VBS的颜色常数的机内值,确定后系统会把它进行转换,得到在页面中实际显示的颜色。
有些VBS的颜色常数的机内值6位数是对称的,所以会正确显示,如vbGreen(hFF00)和vbMagenta(hFF00FF)。

=================== elements 对象 ===================
private sub window_OnLoad()
for i = 0 to 6
frmRes.elements(i).value=""
next
end sub
这段窗口初始化程序将页面中frmRes表单的最前面7个元素(第0-第6个元素)的值清空,注意,不能将循环条件写成
for i=1 to 7
因为这样系统将认为是第1-第7个元素,系统对元素的标识是从0开始的。

====================== Set语句 =======================
dim TheForm
set TheForm = document.frmRes
上面语句设置用TheForm变量引用frmRes表单,可以减少书写,并使对页面的变动有更强的适应性。在程序中可以这样引用frmRes的元素:
TheForm.txtName.focus

注意:Set语句将对象引用赋给变量或属性,设置TheForm变量的语句前面必须要用set引导,否则将出错。
当使用 Set 将一个对象引用赋给变量时,并不是为变量创建对象的副本,而是创建对象的引用。可有多个对象变量引用同一个对象。因为这些变量是对象引用(不是副本),所以对对象所作的任何改动都会影响所有引用该对象的变量。

===========Location对象===========
每个窗口都有一个Location对象,定义了其包含的主页的网页地址信息。Location对象的主要属性有:
href 网页的URL
protocal 网络协议
host,hostname 主机名
pathname 路径
port 端口号
还可以使用 location.href=newURL 语句重定向页面地址。

==========window对象================
window对象的属性和方法无需指明窗口的名称,因此window对象的方法名称可以看作系统的语句。如窗口的名称可以用window.name,也可以直接用name。

status属性是状态栏提示信息,可用下面的语句改变状态栏的信息:
status="I am busy! Please wait for a miniter!"

window对象的navigate方法可以重定向页面地址。如 navigate "http://www.sina.com.cn"

============== alert和 confirm 语句 =================

alert "比尔正在认真地进行一项生物试验"
window对象的alert方法用来显示提示文本,如上图。

window对象的confirm方法弹出一个含有“确定”和“取消”按钮的对话框,可以用分支程序处理用户的选择。如上图。

flag=prompt ("比尔正在进行生物试验吗?")
if flag then
msgbox "正在进行中……"
else
msgbox "玩去了……"

[1] [2]  下一页


[VB.NET程序][原创]《VBScript制作实例》笔记  
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Web开发  · 网页制作
    · 平面设计  · 网站运营
    · 网站推广  · 搜索优化
    · 建站心得  · 站长故事
    · 互联动态
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台