wml中的任务
WML允许我们在程序中指定一些任务,当某些特定的事件激活时,即可执行这些任务,从而完成需要的操作。
WML提供了4个任务元素,即go、prev、noop和refresh,它们主要与do元素和onevent元素中指定的事件相响应。
- <go> 表示切换到新卡片的动作。
- <noop> 规定不做任何事情。用于覆盖卡片组级别的元素。
- <prev> 表示后退到前面的卡片的动作。
- <refresh> 刷新一些指定的卡片变量。如果有变量显示在屏幕上,此任务也刷新屏幕。
实例:
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
"http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card>
<p>
<anchor>
Go To Test
<go href="test.wml" />
</anchor>
<anchor>
Previous Page
<prev/>
</anchor>
<anchor>
Refresh this page
<go href="thispage.wml" />
<refresh>
<setvar name="x" value="30"/>
</refresh>
</anchor>
<do name="back" type="prev" label="Back">
<noop/>
</do>
</p>
</card>
</wml>
任务元素
- go元素
任务可以包含任意次的setvar元素或postfield元素。
go任务的语法格式如下:
<go href="href" sendreferer="false|true" method="get|post" accept-charset="charset">
- href。该属性用于指定目标URL地址,属性是必选的。
- sendreferer。该属性用于指定是否传递调用href所指定的URL的卡片的URL,也是当前页的URL,即HTTP头中HTTP_REFERER。有两种选
择:true或false。其中,默认值为false。 - method。与HTML中的表单FORM的method属性一样,该属性用于指定表单是以GET的方式还是post的方式递交。
默认值为get,但如果没有指定method属性,而<go>和<go/>之间存在# postfield元素,
则WAP手机浏览器会
自动以post方式传递。 - accept-charset。当web服务器处理来自浏览器的输入信息时,该属性可指定服务器进行数据编码时必须采用的字符集
列表。也就是说,该属性指定的字符集替代HTTP头里指定的字符集,以便作为服务器选用字符集的标准。
- prev元素
该元素通常是一个单独的标签<prve/>,不过有时也可由<prev>和</prev>一对标签进行定义。它用于指定将浏览器导航至历史推栈中的前一个URL地址。
在浏览器操作的历史推栈中,prev任务执行的是"取出"操作,将前一个URL地址取出,并把当前URL地址推进历史推栈。如果历史推栈中没有前一个
URL地址,即prev/元素不执行任何任务。
prev任务的语法格式为:
<prev/>
或<prev> 内容(content) </prev>
在后一语法格式中,prev元素包含的内容里面一般是setvar元素。 - refresh元素
它用于刷新当前的卡片,对卡片内指定的变量进行更新。其语法格式为:
<refresh>
内容(context)
</refresh>
其中包含的内容(content)中一般有setvar元素。
通过时间限制(timer元素)对卡片进行刷新。 - noop元素
表示什么也不做,是一个空操作,在替代卡片组级的do元素是十分有用。该元素是一个单独的标签,即 <noop/> 标签。其语法格式如下:
<noop/>
noop元素没有属性,下面的简单程序中就包含了noop元素实现得空任务操作:
当用户点击这个 "Back" 链接时,他或他被被带回前面的卡片。但是 <noop> 标签阻止了这个操作;当用户点击 "Back" 时,不会发生任何事情:
<card id="card1">
<do name="back" type="prev" label="Back">
<noop/>
</do>
...
</card>