第二课:WML语言编程
2012/9/18 4:19:00 人气 1777 怀旧国机论坛------------ 16.do元素 ----------
接着上篇的哦!各位网友要从头开始哦! do元素提供了一个通用的事件处理机制,使得用户可以参与当前卡片的事件处理。
通过<do>和</do>标签将用户交互和某一个任务联系在一起。用户交互可以是用户按下的功能键、选择的菜单项,也可以是用户的声音提示。
当用户激活这些交互功能时,用户浏览器就会执行与do元素相关的任务。其语法格式如下:
======<do type=“type“ label=“label“ name=“name“ optional=“boolean“>任务(task)</do>======
其中tast是与do元素关联的动作,也是条件激活时浏览器即将执行的内容。在do元素中,用户必须绑定且只能绑定go、prev、noop和refresh四种元素所实现任务中的一个任务(task)。go元素用于定位制定的URL地址,prev元素用于定位并打开前一操作或任务,doop为空操作,refresh用于刷新当前卡片组或任务,有关他们的详细用法我们后面会陆续介绍。do元素可以用于卡片一级,也可用于卡片组一级。当用于卡片一级时,do元素必须包含在*元素中;而用于卡片组一级时,do元素必须包含在template元素中,由此定义的do元素将同时应用于当前卡片组的所有卡片。此时如果某个卡片不想应用模板中的do元素及其任务,则需采用我们前面介绍的方法,使用同名事件处理来替代模板中的do元素的事件处理。而且,不论事件关联的任务是否相同,当do元素定义的事件名称相同时,卡片的do元素将忽视卡片组一级do元素的影响,及卡片一组的do元素将被优先执行。另外,含有空操作任务的do元素,不论它是否被激活,它都不会传送或显示到用户的浏览器中,这在一定程度上可以加快浏览器的工作效率,因为服务器端体它抛弃了一些空任务的判断。 do元素各个属*的功能及用法讲解如下:
-------------------------------
1)用于指定下一页-do元素的类型,也即需要关联、绑定的用户交互事件,是必选属*。用户浏览器接到这些事件后,就会激活它们并执行相应的操作与处理。如果在一个卡片中定义了多个do元素并拥有同样,那么用户必须为每个do指定不同的事件名才行,否则就会发生判断混乱的错误。do元素典型的类型及执行条件介绍如下:
-------
1、accept。当用户选择或按下相应功能键时(accept)、选项、命名或按钮时,浏览器接收或激活当前所作选择。
2、prev。激活prev键时,浏览器将导航到历史记录中的前一个卡片。
3、help。激活HELP功能键或相应按钮、命名时,浏览下一页-器显示与当前内容相关 的帮助信息。
4、reset。激活reset功能键或相应按钮、命名时,清除或重置当前卡片组或浏览器的状态。
5、options。激活options功能键或相应按钮、命名时,浏览器显示与当前内容有关的选项或附加操作。
6、de&lete。激活de&lete功能键或相应按钮、命名时,删除当前项目或选择。
7、unknown。如果给出的类型不能为do元素所识别,则一律按照unknown型处理,相当于类型为空,即type=““。
8、vnd.*。vnd.*及其它不同大小写组合[Vv][Nn][Dd].*。这种类型定义的都是vnd.cotype,用于激活供应商或用户浏览器自定义的某个特定功能,其中co为公司(company)名的缩写。
9、X-*与X-*。扩展类型,目前WML中还没有使用。
-----
2)label。该属*指定的文本字符串可以表示用户的交互事件。例如,当把某一个任务绑定在accept键上之后,并设置了label属*,比如label=“gone“,那么浏览器就会将label的值“gome”显示在屏幕上;如果不指定,浏览器则会显示默认的“ok”字符串。为了保证能在较小的手机上显示出来,label的属*值最多不超过6个字符。不过这可能因WAP手机品牌、型号不同而稍有不同,有的手机最多不能超过5个字符。而且,如果手机浏览器不支持动态标签显示,那么它就会忽视label属*。
3)该属*用于指定do元索所绑定事件的名称。如果多个do元素制定了相同的name,那么他们绑定的事件统属一个。如果卡片一般与卡片组一级中do元素制定了相同的事件名,那么卡片一级的时间将被优先执行,卡片组一级的事件将被忽视。WML规定,在同一卡片或在同一模板中,不得指定具有相同事件名(name)的两个或两个以上的do元素。另外,如果name属*值为空,则相当于没有指定name属*,这时do元素执行的事件或操作由type的属*值决定。
4)optional。指定浏览器是否忽视do元素及其包含的任务。有两个可选值:true和false。如果值为true,则浏览器将忽视当前do元素,即不执行它所绑定的任务。反之,若值为false,则执行do元素。
----------
17.设置变量时,以下几种情况还应当引起大家注意
----------
1)可以使用WMLScript的变量值设置WML的变量,反之亦然。也就是说,使用WML及WMLScript编写程序时,它们可以使用同名编程。
2)在WAP开发工具中,通常提供有对变量进行管理和维护的选项卡或对话框,开发人员从中也可以对相应的变量进行设置及编辑。
3)在当前上下文内容中,可以使用*元素的newcontext属*来消除所有的变量值。
----------
18.setvar元素
----------
setvar元素用于指定在当前上下文内容中的变量的值,从侧面影响正在运行的任务。其语法格式如下:
<setvar name=“name“ value=“value“/>===它有两个属*:name和value。前者用于指定变量的名称,后者用于指定所需赋给变量的值。这两个属*都是必选的,它们的数据类型均属于VDATA型。如果name属*所规定的变量名不合法或不符合运行环境的要求,那么setvar元素在WML程序运行中将被忽视,不能发挥其应有的作用。
----------
19.postfield元素
----------
postfield元素用于指定当浏览器接到URL请求时,向原服务器(origin server)传送的域名其域值。传输时,传输域及传输值的实际编码方式主要依赖于浏览器与原服务器的通信方式。postfield元素是通过单独?lt;postfield/>标签进行定义的,其语法格式如下:
==========<postfield name=“name“ value=“value“>========它共有两个属*:name与value,它们的取值均属于VDATA型数据。其中,name属*用于指定传输域的名称,value属*用于定义传输的值。这两个属*均为必选属*。
---------- 20.onevent元素 ----------
onevent元素通过<onevent>和</onevent>标签可以把包含的任务与特定的时间捆绑在一起。当用户激活这一特定事件时,onevent元素所绑定的任务就会被立即执行。onevent元素的语法格式如下:===========<onevent type=“type“>任务(task)</onevent>=====其中task是与onevent元素关联的动作,也是条件激活时浏览器即将执行的内容。与do元素一样,onevent元素中用户也必须绑定且只能绑定go、prev、noop和refresh四种元素所实现任务中的一个任务,go元素用于定位指定URL地址、prev元素用于定位并打开前一操作或任务,noop为空操作,refresh用于刷新当前卡片组或任务。onevent元素只有一个属*,即type属*,它是必选属*,主要用于定义特定事件的名称。该属*值的数据类型为CDATA型。
接着上篇的哦!各位网友要从头开始哦! do元素提供了一个通用的事件处理机制,使得用户可以参与当前卡片的事件处理。
通过<do>和</do>标签将用户交互和某一个任务联系在一起。用户交互可以是用户按下的功能键、选择的菜单项,也可以是用户的声音提示。
当用户激活这些交互功能时,用户浏览器就会执行与do元素相关的任务。其语法格式如下:
======<do type=“type“ label=“label“ name=“name“ optional=“boolean“>任务(task)</do>======
其中tast是与do元素关联的动作,也是条件激活时浏览器即将执行的内容。在do元素中,用户必须绑定且只能绑定go、prev、noop和refresh四种元素所实现任务中的一个任务(task)。go元素用于定位制定的URL地址,prev元素用于定位并打开前一操作或任务,doop为空操作,refresh用于刷新当前卡片组或任务,有关他们的详细用法我们后面会陆续介绍。do元素可以用于卡片一级,也可用于卡片组一级。当用于卡片一级时,do元素必须包含在*元素中;而用于卡片组一级时,do元素必须包含在template元素中,由此定义的do元素将同时应用于当前卡片组的所有卡片。此时如果某个卡片不想应用模板中的do元素及其任务,则需采用我们前面介绍的方法,使用同名事件处理来替代模板中的do元素的事件处理。而且,不论事件关联的任务是否相同,当do元素定义的事件名称相同时,卡片的do元素将忽视卡片组一级do元素的影响,及卡片一组的do元素将被优先执行。另外,含有空操作任务的do元素,不论它是否被激活,它都不会传送或显示到用户的浏览器中,这在一定程度上可以加快浏览器的工作效率,因为服务器端体它抛弃了一些空任务的判断。 do元素各个属*的功能及用法讲解如下:
-------------------------------
1)用于指定下一页-do元素的类型,也即需要关联、绑定的用户交互事件,是必选属*。用户浏览器接到这些事件后,就会激活它们并执行相应的操作与处理。如果在一个卡片中定义了多个do元素并拥有同样,那么用户必须为每个do指定不同的事件名才行,否则就会发生判断混乱的错误。do元素典型的类型及执行条件介绍如下:
-------
1、accept。当用户选择或按下相应功能键时(accept)、选项、命名或按钮时,浏览器接收或激活当前所作选择。
2、prev。激活prev键时,浏览器将导航到历史记录中的前一个卡片。
3、help。激活HELP功能键或相应按钮、命名时,浏览下一页-器显示与当前内容相关 的帮助信息。
4、reset。激活reset功能键或相应按钮、命名时,清除或重置当前卡片组或浏览器的状态。
5、options。激活options功能键或相应按钮、命名时,浏览器显示与当前内容有关的选项或附加操作。
6、de&lete。激活de&lete功能键或相应按钮、命名时,删除当前项目或选择。
7、unknown。如果给出的类型不能为do元素所识别,则一律按照unknown型处理,相当于类型为空,即type=““。
8、vnd.*。vnd.*及其它不同大小写组合[Vv][Nn][Dd].*。这种类型定义的都是vnd.cotype,用于激活供应商或用户浏览器自定义的某个特定功能,其中co为公司(company)名的缩写。
9、X-*与X-*。扩展类型,目前WML中还没有使用。
-----
2)label。该属*指定的文本字符串可以表示用户的交互事件。例如,当把某一个任务绑定在accept键上之后,并设置了label属*,比如label=“gone“,那么浏览器就会将label的值“gome”显示在屏幕上;如果不指定,浏览器则会显示默认的“ok”字符串。为了保证能在较小的手机上显示出来,label的属*值最多不超过6个字符。不过这可能因WAP手机品牌、型号不同而稍有不同,有的手机最多不能超过5个字符。而且,如果手机浏览器不支持动态标签显示,那么它就会忽视label属*。
3)该属*用于指定do元索所绑定事件的名称。如果多个do元素制定了相同的name,那么他们绑定的事件统属一个。如果卡片一般与卡片组一级中do元素制定了相同的事件名,那么卡片一级的时间将被优先执行,卡片组一级的事件将被忽视。WML规定,在同一卡片或在同一模板中,不得指定具有相同事件名(name)的两个或两个以上的do元素。另外,如果name属*值为空,则相当于没有指定name属*,这时do元素执行的事件或操作由type的属*值决定。
4)optional。指定浏览器是否忽视do元素及其包含的任务。有两个可选值:true和false。如果值为true,则浏览器将忽视当前do元素,即不执行它所绑定的任务。反之,若值为false,则执行do元素。
----------
17.设置变量时,以下几种情况还应当引起大家注意
----------
1)可以使用WMLScript的变量值设置WML的变量,反之亦然。也就是说,使用WML及WMLScript编写程序时,它们可以使用同名编程。
2)在WAP开发工具中,通常提供有对变量进行管理和维护的选项卡或对话框,开发人员从中也可以对相应的变量进行设置及编辑。
3)在当前上下文内容中,可以使用*元素的newcontext属*来消除所有的变量值。
----------
18.setvar元素
----------
setvar元素用于指定在当前上下文内容中的变量的值,从侧面影响正在运行的任务。其语法格式如下:
<setvar name=“name“ value=“value“/>===它有两个属*:name和value。前者用于指定变量的名称,后者用于指定所需赋给变量的值。这两个属*都是必选的,它们的数据类型均属于VDATA型。如果name属*所规定的变量名不合法或不符合运行环境的要求,那么setvar元素在WML程序运行中将被忽视,不能发挥其应有的作用。
----------
19.postfield元素
----------
postfield元素用于指定当浏览器接到URL请求时,向原服务器(origin server)传送的域名其域值。传输时,传输域及传输值的实际编码方式主要依赖于浏览器与原服务器的通信方式。postfield元素是通过单独?lt;postfield/>标签进行定义的,其语法格式如下:
==========<postfield name=“name“ value=“value“>========它共有两个属*:name与value,它们的取值均属于VDATA型数据。其中,name属*用于指定传输域的名称,value属*用于定义传输的值。这两个属*均为必选属*。
---------- 20.onevent元素 ----------
onevent元素通过<onevent>和</onevent>标签可以把包含的任务与特定的时间捆绑在一起。当用户激活这一特定事件时,onevent元素所绑定的任务就会被立即执行。onevent元素的语法格式如下:===========<onevent type=“type“>任务(task)</onevent>=====其中task是与onevent元素关联的动作,也是条件激活时浏览器即将执行的内容。与do元素一样,onevent元素中用户也必须绑定且只能绑定go、prev、noop和refresh四种元素所实现任务中的一个任务,go元素用于定位指定URL地址、prev元素用于定位并打开前一操作或任务,noop为空操作,refresh用于刷新当前卡片组或任务。onevent元素只有一个属*,即type属*,它是必选属*,主要用于定义特定事件的名称。该属*值的数据类型为CDATA型。
暂无回复!
发表回复