=========== 添加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
|