WMLBrowser库及其函数
来源:网络 9.5 WMLBrowser库及其函数 WMLBrowser库提供了使用WMLScript操作WML卡片及WML浏览器的各种功能函数,这些函数为WMLScript和WML的结合使用提供了很好的支持。不过,如果所用系统不支持WML浏览器,或WMLScript的解释器不是由WML浏览器所激活的,那么WMLBrowser库的所有函数均不能进行有效的操作和处理,只能返回无效值invalid。 WMLBrowser库函数主要包括getCurrentCard、getVar、go、newContext、prev、refresh和setVar函数,下面我们就详细介绍这些函数的功能与用法。 9.5.1 getVar函数 getVar函数用于获取和返回给定变量名的变量值,该变量名由参数name给定,变量名必须遵循WML有关变量命名的语法和规定。如果参数指定的变量不存在,那么函数就会返回空字符串。getVar函数的语法格式如下: WMLBrowser.getVar(name) 其中的参数name必须是字符串形式表示的变量名,变量值也将以字符串的形式返回。如果变量名的语法不正确,那么函数就会返回无效值invalid。 例如,在下面的几行程序中,变量name被赋值"Good!",所以当使用getVar函数测试它的变量值的时候,会得到"Good!"的结果。 var name = "Good!"; var a = WMLBrowser.getVar("name"); // 返回变量name的值,故a = "Good!" 9.5.2 setVar函数 setVar函数的功能是,在当前浏览器运行的程序中,就给定两个参数name和value进行检验和操作,如果name参数代表的变量名确实存在,那么就将value参数代表的变量值赋给name参数代表的变量,然后返回true;否则,就不赋值,同时返回false。setVar函数的语法格式如下: WMLBrowser.setVar(name, value) 其中参数name和value所代表的变量名及变量值都必须符合WML的语法规定,变量值必须是XML合法的CDATA型数据。如果给定的变量名不符合语法规定或者数值类型不正确,那么函数就会返回无效值invalid。 例如,当前浏览器运行的WML程序中,我们已经定义了name变量,即程序中确实存在该变量,所以当使用setVar函数进行检验和操作时,就会得到变量名为真(true)的判断,同时会把给定的参数值"Mary"赋给该变量: var a = WMLBrowser.setVar("name", "Mary"); // 返回结果为a = true setVar函数赋值的条件是检验的变量名确实存在,而不管该变量是否已经赋值,也不管该变量参与何种运算;而且一旦赋值,该变量在程序以后的运行中均采用新赋的值进行操作或运算。 9.5.3 go函数 go函数用于装入由给定参数url所指定URL地址的内容。它的功能与WML语言的go任务的功能完全相同。该URL的装入是在WML浏览器接收到WMLScript解释器调用操作的结束信息后开始的,即先由WMLScript解释器调用执行当前的go函数,执行完后向WML浏览器发出信息,浏览器随后即装入go函数指定URL地址的内容。如果装入成功,则返回一个空字符串。如果给定的参数url是个空字符串,那么浏览器将无法装入指定内容,同时也返回一个空字符串。go函数的语法格式如下: WMLBrowser.go(url) 其中的参数url需取字符串形式的URL地址。如果给定的URL地址不合法,则go函数就会返回无效值invalid。例如,下面的例子即可使用go函数装入指定URL地址http://www.host.com/loc/app.dck#start的内容: var card = "http://www.host.com/loc/app.dck#start"; WMLBrowser.go(card); 9.5.4 prev函数 prev函数的功能是在当前程序执行的过程中,使WML浏览器返回到显示的上一个卡片的内容,它与WML语言的prev任务具有相同的功能。这里的卡片装入也是在WML浏览器接收到WMLScript解释器调用操作的结束信息后开始的,即先由WMLScript解释器调用执行当前的prev函数,执行完后向WML浏览器发出信息,浏览器随后装入prev函数所指定的上一卡片的内容。prev函数的语法格式为: WMLBrowser.prev( ) 它没有参数,但它有明确的操作对象,即WML浏览器显示的上一个卡片。与go函数一样,如果装入成功,prev函数也返回一个空字符串。如果WML浏览器前面还没有显示过卡片,即上一卡片的URL地址为空,那么浏览器将不执行prev函数的操作,也不试着装入上一卡片的内容,同时返回一个空字符串。 其实,prev函数和go函数的调用是相互覆盖的,它们可以在程序将控制权返回给浏览器之前反复地调用、装入指定URL地址的内容,go函数往前调用,而prev函数往后调用。 9.5.5 newContext函数 这是一个比较简单的函数,它的功能是清理当前WML浏览器中的内容并返回空字符串,与WML语言的Newcontext属性具有相同的功能。newContext函数的语法格式为: WMLBrowser.newContext( ) 如果当前WML的浏览器存在某些问题而无法清理,函数会返回无效值invalid。 例如,下面使用newContext函数的语句即可清理当前的WML浏览器内容: WMLBrowser.newContext(); 9.5.6 getCurrentCard函数 getCurrentCard函数的功能是获取并返回当前浏览器正在运行的卡片的最小的相对路径,其语法格式如下: WMLBrowser.getCurrentCard( ) 它没有参数,返回值为字符串形式的相对路径。不过,如果与当前路径对应的目录下没有当前卡片,函数会返回无效值invalid。 例如,假设当前WML浏览器中显示的是http://www.mywap.com/script/deck#input中的卡片,则使用newContext函数可以获得当前卡片的最小相对路径"deck#input": var a = WMLBrowser.getCurrentCard( ); // 返回结果为a = "deck#input" 9.5.7 refresh函数 refresh函数的功能是强制WML浏览器更新内容并返回空字符串。在这一点上它与WML语言的refresh任务的功能是完全相同的。其语法格式为: WMLBrowser.refresh( ) 它也没有参数,当函数生效时将返回一个空字符串,否则,如果浏览器内容无法更新或其中没有显示卡片,则会返回无效值invalid。 refresh函数的使用方法十分简单,下面的自定义函数中就利用了refresh函数进行浏览器内容的更新: function convert2Peso( ) { var dollars = WMLBrowser.getVar("amount"); var dol2peso = 10.2; var newAmt = dollars*dol2peso; WMLBrowser.setVar("amount", newAmt); WMLBrowser.refresh( ); } 9.6 Dialogs库及其函数 Dialogs库提供了3个用于用户交互界面操作与处理的功能函数,即prompt、confirm和alert,下面我们就讲解这3个函数的功能和用法。 9.6.1 prompt函数 prompt函数的功能是显示给定的信息并提示用户输入,当用户输入有效的内容后再将用户输入作为结果返回给调用方。该函数的语法格式为: Dialogs.prompt(message, defaultInput) 它有两个参数,其中message参数是个字符串,它是用户给定的用于显示的信息;defaultInput参数用于接受用户输入,同时它包含了一个初始的数值,如果用户不输入,函数将把该初始值返回,否则,就返回用户的输入值。 如果参数内容不符合WMLScript的要求,则prompt函数返回无效值invalid。 看下面使用prompt函数的简单例子: var a = "13098762345"; var b = Dialogs.prompt("Phone number: ",a);; &n
bsp; // 如果用户输入了13012348765,则返回结果为b=13012348765 它在浏览器上显示的结果是:Phone number: 13098762345,如果用户想输入新电话号码,则可在现有号码"13098762345"处直接输入,新输入的号码将替换原有的号码,prompt函数在最后还会将新输入的号码返回。
9.6.2 confirm函数 confirm函数用于提供确认功能,它首先显示给定的message参数所包含的信息,并提供两个可选择的回答“ok”和“cancel”,然后等待用户选择其中的一个。如果用户选择“ok”则返回true;否则,如若选择“cancel”则返回false。该函数的语法格式如下: Dialogs.confirm(message, ok, cancel) 它有3个参数,其中参数message是欲显示的字符串形式的提示信息;参数ok也是用于显示的一个字符串信息,它可以是“OK”,也可以是其他表示OK意义的文本信息,如“I Agree”、“I Like”等等;同样,参数cancel也是用于显示的字符串信息,可以是“Cancel”文本,也可以是其他表示Cancel意义的文本信息。 正常情况下,confirm函数的返回结果是布尔型的true或false。如果用户选择错误或拟显示的信息非法,则函数返回无效值invalid。 下面就是使用confirm函数的简单例子: function onAbort( ) { return Dialogs.confirm("Are you sure?", "Yes", "No"); }; 它显示的结果是:Are you sure? Yes No 其中的“Yes”、“No”是可以选择的,且confirm函数将根据用户选择的结果返回true或false。 9.6.3 alert函数 alert函数的功能是显示给定的message信息给用户,并等待用户的确认,最后返回空字符串作为结束。其语法格式为: Dialogs.alert(message) 如果用户操作错误或浏览器显示有问题,则alert函数会返回无效值invalid。 下面就是使用alert函数的简单例子: function testValue(textElement) { if (String.length(textElement) > 8) { Dialogs.alert("Enter name < 8 chars!"); }; }; 它的作用是,对用户输入名字的长度进行判断,该名字存放在变量textElement中。如果多于8个字符,则使用alert函数显示输入名字必须少于8个字符的信息:"Enter name < 8 chars!"。 9.7 WMLScript非标准库及其库函数 以上各节我们介绍的都是WMLScript的标准库函数,事实上,WMLScript还有一些非标准库函数。这些函数通常是由不同的WAP设备厂家制定并提供的,而且因厂家不同而不同,所以称为“非标准”的库函数。例如,Nokia提供了Debug库函数,Phone.com提供了Console库函数,等等。虽然这些库的名称不同,但涉及的功能函数却是基本一致的,它们主要是为用户操作提供一些辅助功能。下面我们就以Debug库为例介绍3个比较典型的非标准库函数。 9.7.1 openFile函数 openFile函数的功能是为文件读、写或追加等操作而打开一个文件。它的语法格式为: Debug.openFile (fileName, mode) 它有两个参数,其中fileName参数通常以字符串的形式来指定要打开的文件名,可以包含文件所在的路径名称;mode参数用于指定打开文件后的操作方式,共3种选择:"r"指定打开的文件用于读操作,"w"指定文件用于写操作,"a"指定文件用于追加操作。 正常情况下,openFile函数的返回结果为空字符串。如果指定的文件不存在,或文件的操作方式不对,或文件无法操作,那么openFile函数都会返回无效值invalid。 如果给定的fileName和mode参数值的形式不是字符串形式,那么openFile函数也会返回无效值invalid。 下面就是使用openFile函数打开指定文件并进行不同操作的例子: Debug.openFile("c\\tmp\\script.debug", "r"); Debug.openFile("c:\\tmp\\debug", "a"): 9.7.2 closeFile函数 openFile函数用于打开文件,当对文件操作完毕后必须关闭文件,否则就会引起文件处理错误甚至破坏文件,那么如何关闭文件呢?方法就是使用closeFile函数。该函数没有参数,它用于关闭当前打开的文件,语法格式为: Debug.closeFile ( ) 它的返回值为空字符串。下述语句就是使用closeFile函数关闭当前文件的例子: Debug.openFile("c\\tmp\\script.debug", "r"); …………(其他语句) Debug.closeFile ( ); …… Debug.openFile("c:\\tmp\\debug", "a"): …………(其他语句) Debug.closeFile ( ); 9.7.3 println函数 println函数用于输出给定的字符串string中的信息。如果当前系统中存在由openFile函数打开的文件,则println函数将该信息直接写入这一打开的文件;否则,println函数就将该信息送往标准的输出设备,如显示器、打印机等,然后再由这些设备输出给用户。该函数的语法格式如下: Debug.println(string) 如果给定的string信息能够正常输出,则println函数返回一个空字符串;否则,如若输出信息类型不符合要求,或当前系统中不存在合法的打开文件或输出设备,则println函数返回无效值invalid。 下述语句就可以利用println函数向当前打开的文件或输出设备中输出指定的信息: Debug.println("Function f1 ENTRY ..."); // 输出"Function f1 ENTRY ..." Debug.println("Function f1 EXIT ..."); // 输出"Function f1 EXIT ..."
|
刺客-长白 发表于 2006-03-08 14:53 | 编辑 | 引用(0)
|